@gogolang

Страница 774 из 1630
Gleb
25.01.2018
00:00:15
Но я про это не говорю, модель параллелизма в Go мне нравится, всё не плохо. Но вот синтаксис с чисто структурами просто убивает. Я понимаю, что гуглу хотелось иметь язык для студентов, но с нормальным быстродействием и сборщиком мусора. Но шот как-то слишком сильно упростили.

Alexander
25.01.2018
00:03:50
Но я про это не говорю, модель параллелизма в Go мне нравится, всё не плохо. Но вот синтаксис с чисто структурами просто убивает. Я понимаю, что гуглу хотелось иметь язык для студентов, но с нормальным быстродействием и сборщиком мусора. Но шот как-то слишком сильно упростили.
Ну сам же говорил - сначала попробовать модель. С ограничениями и жёсткими правилами. Потом постепенно расширят туда, куда нужно. Может в Go 2 что-то добавят (хотя вряд ли радикально), но это не делает Go 1 в чем либо неполноценным. Опыт показал, что на нём можно много чего писать и людям вцелом нравится.

Тот же Docker, который, практически, революцию совершил в девопс

Google
Gleb
25.01.2018
00:17:28
Тот же Docker, который, практически, революцию совершил в девопс
Ну тут просто цели гугла и мои немного отличаются) Для docker Go - отличный вариант. Это проект, в который контрьбьютит куча народу, в том числе и индусы непонятную дичь пытаются пропихнуть. Так что простота, низкий порог входа и сложность создания говнокода - на первом месте. Мне бы в своих проектах хотелось бы видеть компактный и красивый код. Короче, понятно. Город засыпает, просыпается костылестроитель ?

Slava
25.01.2018
00:42:22
а как ты узнаёшь что у тебя компактный и красивый код? =)

Gleb
25.01.2018
02:21:02
а как ты узнаёшь что у тебя компактный и красивый код? =)
Внутреннеe чувство прекрасного, никак иначе ?‍♂️

Marlik
25.01.2018
02:25:48
Нашёл какой-то мануал, пытаюсь на основе его забацать, но чото не выходит, ЧЯДНТ? https://play.golang.com/p/A10hI26GgZx Получаю такое: 2018/01/25 05:08:29 sql: database is closed

Slava
25.01.2018
02:48:42
на 26 строке ты закрываешь базу при выходе из функции

поэтому она закрыта

Marlik
25.01.2018
02:49:16
поэтому она закрыта
Дык, закрываю через дефер.

Slava
25.01.2018
02:49:26
а когда дефер выполняется?

https://tour.golang.org/flowcontrol/12

Marlik
25.01.2018
02:50:11
Хм, странно, а где же базу тогда закрывать?

Slava
25.01.2018
02:50:19
можешь в main

сразу же после проверки, что InitDB не вернул ошибку

Marlik
25.01.2018
02:50:56
Оу, спасибо всем, вот не подумал где накосячу.

Google
Slava
25.01.2018
02:51:04
не за что

Андрэ
25.01.2018
05:23:13
Котаны, а много ж кто на Гоконф идёт, да?

tsov
25.01.2018
05:24:36
надо в список грехов добавить прелюбодеяние с языками программирования

Aion
25.01.2018
05:27:53
Андрэ
25.01.2018
05:29:52
https://www.gophercon-russia.ru

Андрэ
25.01.2018
05:32:08
Да, тоже вот купил уже билеты

Marlik
25.01.2018
05:32:32
Блэд, чтож так сложно то с БД? Или это у меня только?)) https://play.golang.com/p/QU3JVW1nEvy получаю что такой строки нет, а когда через терминалку захожу в базу, то всё нахожу. ЧЯДНТ?

Alexey
25.01.2018
05:33:41
Какая база?

Marlik
25.01.2018
05:34:07
Alexey
25.01.2018
05:35:02
Мб банально не тот файл открываете?

На первый взгляд, всё ок

Marlik
25.01.2018
05:36:55
Мб банально не тот файл открываете?
Да тот, в папке вместе лежит. Сначала инициализирую БД, проверил, всё ок. func Init() (db *sql.DB, err error) { db, err = sql.Open("sqlite3", "./data.db") if err != nil { log.Fatal(err) } if err = db.Ping(); err != nil { log.Fatal(err) } return db, err }

Dmitriy
25.01.2018
05:38:51
покажи функцию ReturnUser, в примере ReturnChatID

Marlik
25.01.2018
05:39:56
На первый взгляд, всё ок
Я там очепятался. Кажется понял где косяк, выполняю в атоме, не находит, запустил в терминалке вроде чото выдало. Спасибо.

Andrew
25.01.2018
05:41:20
Это как?
var myvar int64 Scan(&myvar) Зачем использовать структуру DATA, если возвратить нужно только int64? :)

Marlik
25.01.2018
05:42:38
var myvar int64 Scan(&myvar) Зачем использовать структуру DATA, если возвратить нужно только int64? :)
Ну это я сократил, там структура побольше. Всё заработало, атом полжизни у меня отобрал)) Надо было сразу в терминалке исполнить.

Всем спасибо.

Google
Andrew
25.01.2018
05:43:12
Хм, думаешь atom переватывает данные и крадёт их?!

Marlik
25.01.2018
05:43:50
Хм, думаешь atom переватывает данные и крадёт их?!
Нууу, Ctrl+B выполняет жи, а тут такая засада.

Andrew
25.01.2018
05:43:56
Разрабов к ответу! Небось они и Half-Life 3 так украли!

Alan
25.01.2018
07:40:44
А кто-нить может подсказать простенький оракловый клиент на go?

Alexander
25.01.2018
07:42:38
а их там два вроде всего было. хз насколько они сложные.

https://github.com/golang/go/wiki/SQLDrivers

Alan
25.01.2018
07:44:16
я вот пробую https://github.com/rana/ora просношался с установкой и library_path, вроде бы поставился

но при запуске примера выдает: ora.Cfg().StmtCfg.SetPrefetchCount undefined (type ora.StmtCfg has no field or method SetPrefetchCount)

Vitalii
25.01.2018
07:50:49
Ivan
25.01.2018
09:23:01
Есть массив со структурами... Допустим беру из массива структуру и в структуре обновляю значение.... Ну так вот, как это сделать что бы не возникло race condition? не говнокодя))

Linux
25.01.2018
09:23:09
может кто подскажет есть альтернативы opengts на go

Ivan
25.01.2018
09:29:26
мютекс использовать
при каждом обращении к массиву? Походу придется...

Artem
25.01.2018
09:30:44
нет и гоша тут не при чем, блокировать надо если планируется запись

Vasily Romanov
25.01.2018
09:31:09
надо на время чтения

Ivan
25.01.2018
09:31:15
а если во время чтения что то поменяется?

получается что надо, правда можно юзать тогда read блокировку

Vasily Romanov
25.01.2018
09:31:31
если чтение интенсивное - можно исполдьзовать RWMutex

Google
Artem
25.01.2018
09:31:39
и всех сажать в очередь на ожидание пока читает кто то?

Vasily Romanov
25.01.2018
09:31:41
там лок на чтение и запись разделён

чтение не будет блочить всех

Admin
ERROR: S client not available

Artem
25.01.2018
09:32:19
ну значит все круто

Ivan
25.01.2018
09:32:56
окей, значит других штук нету. Спасибо за ответы! Вдруг я что то в документации прошляпил и буду фигарить то что уже есть....

Pawel
25.01.2018
09:38:17
это хипстерская вкусовщина. а не ФП-шный подход

Илья
25.01.2018
09:38:54
Если ты изменяешь поле в структуре, то мутексы можно в структуре держать, а не в массиве, тк лочить весь массив на модификации одного элемента, по-моему не очень

Michael
25.01.2018
11:06:15
Uniform Function Call Syntax из D это вот удобно

Alan
25.01.2018
11:29:07
Использовал вот этот http://gopkg.in/goracle.v2
а можешь сслыки с примерами накидать?

Michael
25.01.2018
11:38:50
а можешь сслыки с примерами накидать?
там по ссылке есть описание апи, и пакет преднзначен для database/sql/driver, что означает, что надо подключить пакет, задать правильно строку подключения, и работать с общим sql интерфейсом для Go

примеры есть в оф доках

Alan
25.01.2018
11:40:17
а, понел, буду посмотреть стандартный sql)

Александр
25.01.2018
13:00:47
порекомендую вас за 50%!

Alexander
25.01.2018
13:01:35
Рекомендую /report to @twentydraft

‎‎‎‎
25.01.2018
13:18:33
goarch стоит 386, а go build все равно компилит x64 это норма?

Alan
25.01.2018
13:33:12
‎‎‎‎
25.01.2018
13:57:11
Сейчас не за ПК

У меня gcc установлен x86_64 Может просто 32бит накатить?

John
25.01.2018
13:58:09
а причем тут gcc ? :)

Google
‎‎‎‎
25.01.2018
13:58:55
а причем тут gcc ? :)
Проект юзает sqlite, а в нем есть сишный код

Vitalii
25.01.2018
14:29:40
а можешь сслыки с примерами накидать?
Ну пример простой. Вот так подключаемся к базе: package models import ( "database/sql" "fmt" "github.com/sirupsen/logrus" _ "gopkg.in/goracle.v2" ) var db *sql.DB func ConnectDB() (*sql.DB, error) { var err error dataSourceName := fmt.Sprintf("%s/%s@%s", config.C.Database.User, config.C.Database.Password, config.C.Database.DataSource) db, err = sql.Open(config.C.Database.Type, dataSourceName) if err = db.Ping(); err != nil { return nil, err } logrus.Info("Database connection has been established") return db, err }

Вот делаем простой инсерт func InsertHoiTin(req S11Request) error { query := fmt.Sprintf("INSERT INTO %s.HTLT_HOITIN (TT, NGAYHOI, MSPHIEU, LOAI, MACIC, TENKH, SOCMT, MATCTD, MASP, FECDELIVERY) VALUES (:1, TO_DATE(:2, 'YYYY-MM-DD HH24:MI:SS'), :3, :4, :5, :6, :7, :8, :9, :10 )", config.C.DatabasePrefix) var params []interface{} params = append(params, *req.Status) params = append(params, time.Now().UTC().Format("2006-01-02 15:04:05")) params = append(params, req.Sys.Unid) params = append(params, req.Type) params = append(params, req.CICCode) params = append(params, req.ClientName) params = append(params, req.NationalID) params = append(params, req.FECCICCode) params = append(params, req.ProductCode) params = append(params, req.FECDelivery) _, err := db.Exec(query, params...) return err }

Компиляция кода происходит вот в таком контейнере: FROM golang LABEL vendor="Vitalii Sharavara" LABEL description="Golang and Oracle instant client 12.2" RUN mkdir -p /opt/oracle/ COPY /resources/instantclient_12_2/ /opt/oracle/instantclient_12_2/ ENV LD_LIBRARY_PATH /opt/oracle/instantclient_12_2 ENV ORACLE_HOME /opt/oracle/instantclient_12_2 RUN apt-get update &&\ apt-get install libaio1 &&\ apt-get clean RUN go get gopkg.in/goracle.v2

Александр
25.01.2018
14:34:57
ой все...

Kirill
25.01.2018
14:52:49
gramework
Спасибо)

Michael
25.01.2018
14:53:13
Алексей
25.01.2018
15:05:25
Уважаемые знатоки, помогите с такой проблемкой пожалуйста: type A struct { ... } type B struct { ... } type C struct { ... } func Some(someStruct ){ var asd []someStruct ... return asd } a := Some(A) b := Some(B) c := Some(c) как правильно в функцию переда struct ?

Алексей
25.01.2018
15:06:25
Может, интерфейсы ? ...
внутренности структур отличаются

John
25.01.2018
15:06:55
внутренности структур отличаются
нэ. Объявить один тип interface, и передавать его уже в функцию

type ISome interface ...

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