@proGO

Страница 603 из 1674
Slach
28.04.2017
06:37:54
Valentin
28.04.2017
06:49:44
Круто , спасибо
gmf еще есть https://github.com/3d0c/gmf

Sander
28.04.2017
13:48:41
php, nodejs, python

@BloodJazMan

Google
Che
28.04.2017
14:04:12
ребята, всем привет! объясните, пожалуйста, как обходиться без создания структур, если заранее неизвестно какие данные придут. весь гугл перерыл

Peter
28.04.2017
14:05:14
Не гоу-вэй

Daniel
28.04.2017
14:06:11
Если не известно, какие придут - откуда известно, как их обрабатывать?

Che
28.04.2017
14:06:17
ну как-то же можно?

Daniel
28.04.2017
14:06:31
Что именно можно?

Che
28.04.2017
14:06:37
обрабатывать

LexsZero
28.04.2017
14:06:55
можно. interface{}

Daniel
28.04.2017
14:07:02
Обрабатывать неизвестно что нельзя

Che
28.04.2017
14:07:15
допустим если известно что приходит csv, но csv всегда с разными колонками и на все не сделать никак одну структуру

можно. interface{}
а можно какой-нибудь пример или ссылку с примером?

Che
28.04.2017
14:10:47
А что с ним делать нада?
в базу данных перегнать

Peter
28.04.2017
14:11:59
Читаешь первую строчку, сощздаешь таблицу и читаешь дальше построчно, сплитя разделителем

Google
Peter
28.04.2017
14:16:41
Пиши на питоне, го для серьёзного бизнеса где нет неизвестных данных ?

Che
28.04.2017
14:54:15
подскажите, пожалуйста. не могу понять как итерировать в шаблоне. про {{ range }} понял (вроде), но в моем случае не работает. router.GET("/testerr", func(c *gin.Context) { db, _ := sqlx.Connect("postgres", AppConf.Scheme) rows, err := db.Queryx("SELECT * FROM Errors") if err != nil { panic(err) } for rows.Next() { var ( time string mesage string ) err = rows.Scan(&time, &mesage) if err != nil { panic(err) } c.HTML(200, "er.html", gin.H{ "cols": colNames("Errors"), "rows": time, "msgs": mesage, }) } }) шаблон <html> <body> <table class="table table-hover"> <thead> <tr> {{ range $col := .cols }} <th>{{ $col }}</th> {{ end }} </tr> </thead> <tbody> <tr> {{ range $row := .rows }} <td>{{ $row }}</td> {{ end }} {{ range $msg := .msgs }} <td>{{ $msg }}</td> {{ end }} </tr> </tbody> </table> </body> </html> проблема в том, что executing "er.html" at <.rows>: range can't iterate over 21, то есть не итерируется. что я делаю не правильно?

Che
28.04.2017
14:57:42
Может не range $col := .cols а range _, $col := .cols?
panic: template: er.html:6: function "_" not defined

совсем непонятно как сделать select id, name from users и проитерировать это в таблицу в шаблоне

LexsZero
28.04.2017
15:01:41
совсем непонятно как сделать select id, name from users и проитерировать это в таблицу в шаблоне
складываешь результаты селекта в массив/мапу и пихаешь ее в шаблон

Che
28.04.2017
15:02:55
извините за глупые вопросы, я новичек

LexsZero
28.04.2017
15:03:55
а в самом шаблоне как итерировать?
{{range pipeline}} T1 {{end}} The value of the pipeline must be an array, slice, map, or channel. If the value of the pipeline has length zero, nothing is output; otherwise, dot is set to the successive elements of the array, slice, or map and T1 is executed. If the value is a map and the keys are of basic type with a defined order ("comparable"), the elements will be visited in sorted key order. {{range pipeline}} T1 {{else}} T0 {{end}} The value of the pipeline must be an array, slice, map, or channel. If the value of the pipeline has length zero, dot is unaffected and T0 is executed; otherwise, dot is set to the successive elements of the array, slice, or map and T1 is executed. https://godoc.org/text/template

https://play.golang.org/p/NmvRib2LF2 как-то так

Che
28.04.2017
15:21:12
вроде бы понятно, но не понятно только как обойтись без структуры Item. если у меня будет очень много всяких мелких таблиц, придется ведь на каждую такую создавать отдельную структуру. поправте если не прав

LexsZero
28.04.2017
16:02:28
один хрен модель на структурах расписывать чтоб орм прикрутить

не руками же все эти таблицы создавать и мигрейтить

Peter
28.04.2017
16:04:21
В нормальных языках делается так >result = db.query("select id, login, password from users") >for i in result: print(i[0], i[1],i[2]) Но Goв... не ищет лёгких путей. Сначала создай структуру, затем ссылку на нее, присвой в итерации значения полям и только тогда ты сможешь чет там принтануть. Такие дела, юный паддаван. Добро пожаловать в мир ебанутых.

LexsZero
28.04.2017
16:04:27
накрайняк можно юзать map[string]interfae{}, но зачем тогда го?

Google
Peter
28.04.2017
16:05:14
s/нормальных языках/пхп/
Питон тоже плох?

LexsZero
28.04.2017
16:05:33
понятия не имею, я не про конкретный язык, а про подход

Felix
28.04.2017
16:05:56
Питон тоже плох?
в питоне тоже никто так не делает

нигде так делать не надо

Peter
28.04.2017
16:06:32
в питоне тоже никто так не делает
Все так делают, но потом рефакторят

Но дело даже не в этом

А в том, что питон позволяет так делать. А Go нет

Хозяину так не нравилось и он запретил

LexsZero
28.04.2017
16:07:34
позволяет, map[string]interface{}

хоть обделайся

Peter
28.04.2017
16:07:44
А потом стало религией

позволяет, map[string]interface{}
Кек. Не сравнивай по сложности

LexsZero
28.04.2017
16:09:09
Кек. Не сравнивай по сложности
ну если хочется динамической типизации - надо писать на языке с динамической типизацией, а не страдать что СЛОЖНОА ТИПЫ КАКИЕ-ТО

Peter
28.04.2017
16:09:47
Он первый начал!

Я, собственно, и говорю, что есть и другие языки и на них что-то проще делать

Nikolay
28.04.2017
16:12:24
Все так делают, но потом рефакторят
не, в питоне все юзают SQLAlchemy

Peter
28.04.2017
16:12:52
не, в питоне все юзают SQLAlchemy
Это уже после рефакторинга ?

Nikolay
28.04.2017
16:13:17
Это уже после рефакторинга ?
ну хрен знает, по мне так сразу нельзя SQL руками писать

Google
Nikolay
28.04.2017
16:13:25
а в Go есть толковые ORMы?

Nikolay
28.04.2017
16:14:13
Почему?
потому что есть ORM и потому что руки кривые

в 2017 году SQL-инъекции в коде иметь - это ололо

Peter
28.04.2017
16:14:50
Ну да, если есть ОРМ, то его надо использовать

Admin
ERROR: S client not available

Felix
28.04.2017
16:14:50
Почему?
потому что 1) экранирование 2) миграции 3) деплой 4) удобство

Nikolay
28.04.2017
16:14:54
но, тем не менее, когда пишешь руками SQL - они есть часто

Peter
28.04.2017
16:15:53
Окэй, github.com/lib/pq это Орм?

LexsZero
28.04.2017
16:16:30
нет

Felix
28.04.2017
16:16:52
нет, написано же драйвер

орм - это то, где написано орм

LexsZero
28.04.2017
16:17:29
http://jinzhu.me/gorm/ например

Peter
28.04.2017
16:17:30
Но ведь там query("...", params) <= экранирование

Igor
28.04.2017
16:17:33
или https://github.com/go-pg/pg

экранирование - это обязанность любого драйвера

Peter
28.04.2017
16:18:09
То есть обычную либу западло, надо Орм тащить?

Google
Igor
28.04.2017
16:18:19
не надо, зачем. никто не заставляет.

ну, в смысле, если хочешь всего и сразу - тащи, если не хочешь - не тащи.

Peter
28.04.2017
16:18:35
Ну лан тогда

Felix
28.04.2017
16:18:58
Но ведь там query("...", params) <= экранирование
когда удобство будет - тогда будет орм

Peter
28.04.2017
16:19:13
Кстати, а по базам данных есть отдельный чатик?

Igor
28.04.2017
16:38:16
https://github.com/A-gambit/awesome-telegram-chats

Aleksey
28.04.2017
16:45:47
Друзья , такой вопрос. Есть линукс сервер - 1шт. Есть 3 разных golang приложений , есть 3 домена. Как это все лучше деплоить на одном сервере?

m
28.04.2017
16:46:48
nginx и 3 демона на разные порты локалхоста.

Igor
28.04.2017
16:46:55
поставить nginx?

m
28.04.2017
16:47:32
создать сервера для каждого домена в nginx-е и проксировать к своим демонам.

Aleksey
28.04.2017
16:47:41
поставить nginx?
Голанг же могет без сторонних серверов?

m
28.04.2017
16:47:56
что может?

Aleksey
28.04.2017
16:48:12
что может?
Хоститься

LexsZero
28.04.2017
16:48:16
а три демона слушать на одном 80 не могут

Igor
28.04.2017
16:48:17
Голанг же могет без сторонних серверов?
ну раз могет - сам и разруливай разные домены на одном порту)

Mikhail
28.04.2017
16:48:23
Голанг же могет без сторонних серверов?
Статику всё равно через nginx отдавать

LexsZero
28.04.2017
16:48:46
потом потребуется ssl, отдача статики и какое-нибудь кеширование - все равно нжинкс ставить

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