Slach
Cукалол. а по существу выражаться начнешь уже или как?
Anonymous
да, 16.04
Anonymous
сейчас проверю
Slach
ну тогда копипасти и тащи бекпорт последнего голанда из PPA
Slach
sudo apt-key adv —keyserver keyserver.ubuntu.com —recv-keys F27CAC73095AC1650A639CA7E1CC0F036DF706BE а еще вот это надо чтобы подписаный пакет из PPA скачался
Alexey
‘cause «gays» is gender-neutral
Kirill
вот почему не guys?
Alexey
потому что guys – это «парни», не gender-neutral
Kirill
под ЦА группы как-то больше подходит, насколько я знаю
Slava
А кто-то gorp или sqlboil пробовал?
Sergey
Доброе утро!
Sergey
Помогите пожалуйста нубу
Sergey
делаю упражнения Go по книжке Кенригана
Sergey
Есть упражнение - вывести файлы в которых встречаются дубли строк
Sergey
package main import ( "bufio" "fmt" "os" ) func main() { files := os.Args[1:] if len(files) == 0 { fmt.Println("Нет файла") os.Exit(1) } else { for _, arg := range files { counts := make(map[string]int) f, err := os.Open(arg) if err != nil { fmt.Fprintf(os.Stderr, "dup2: %v\n", err) continue } countLines(f, counts) f.Close() isDup := false fmt.Println(arg) for key, n := range counts { fmt.Printf("%v - %v\n", key, n) if n > 1 { isDup = true } } if isDup == true { // fmt.Println(arg) continue } } } } func countLines(f *os.File, counts map[string]int) { input := bufio.NewScanner(f) for input.Scan() { if input.Text() == "stop" { break } counts[input.Text()]++ } }
Sergey
Оно работает
Sergey
но у меня есть непонятки с поведением
Sergey
fmt.Println(arg) for key, n := range counts { fmt.Printf("%v - %v\n", key, n) if n > 1 { isDup = true } }
Sergey
вот в этом кусочке
Sergey
Вызываю я программу ./main.exe 1.txt 2.txt 3.txt
Sergey
а вывод в строках выше, постоянно получается разный - строки из файлов выводятся в разном порядке
Sergey
то в одном, то в другом, то в третьем...то, вообще, не все
Sergey
но программа работает и результат выдает правильный
Anonymous
// for key, n := range counts { тут неоднозначный порядок если хочешь одно и тоже - возьми все ключи, посортируй и сделай вывод
Anton
добрый день!
Anton
учусь писать на го, хочу разнести в отдельные файлы подключение к базе данных и модели с их функциями
Anton
скажите, как правильно это сделать так, чтобы потом из файла модели использовать объект базы данных для работы с запросами?
Slava
инициализируй модель/менеджер с инстансом базы данных, саму базу данных инициализируй в main
Slava
и передавай уже там в модель/менеджер
Anton
то есть нужно объект базы передавать в модель каждый раз?
Anton
или я неверно понял?
Slava
я не знаю что у тебя за модель
Slava
любую модель должен какой-то репозиторий возвращать, она же не может сама себя генерировать
Anton
ну я вообще опираюсь на этот пример https://github.com/josephspurrier/gowebapp
Anton
но он для меня пока местами сложноват
Anton
и вот там, если посмотреть, файлы модели, они импортируют database, и сразу его используют
Anton
но мне не удается так сделать
Slach
Народ, а можно нюбский вопрос про горутинам? вот есть такой код https://play.golang.org/p/uF-T_xWv2D почему он выпадает в 13й строке? я ж просто хочу в канал чтото записать где написано что нельзя создать канал без работающей go рутины и что то в него запульнуть ? если при этом main сама является горутиной?
Slach
стек оверфлоу. хвала тебе =) http://stackoverflow.com/questions/12398359/throw-all-goroutines-are-asleep-deadlock
Slava
ты пишешь в nil канал - значит блокируешь навсегда
Slava
у тебя всего одна горутина
Slava
значит это конец всему
Slava
смысла жить дальше нет
Anton
а что с моим вопросом?)
Slava
в коде который ты показываешь - база данных сохраняется в глобальную переменную, которая потом используется во всех остальных пакетах
Slava
это путь в никуда, так делать не надо
Yehor
у тебя всего одна горутина
main не является горутиной значит?
Slava
почему же, горутина
Slava
особенная, но горутина
Slava
я же пишу выше, что всего одна горутина выполняется
Yehor
понял
Anton
а есть какой-то корретный пример, где можно увидеть хорошую MVC структуру?
MXLTN
это путь в никуда, так делать не надо
можно два слова почему? я так много везде видел и сам так делаю ((
Slava
потому что
Slava
1) сложно тестировать
MXLTN
потом конект копируется и закрывается при каждом реквесте
Yehor
а есть какой-то корретный пример, где можно увидеть хорошую MVC структуру?
там же в описании есть ссылка на https://github.com/blue-jay/blueprint
Anton
спасибо большое!
MXLTN
присоединяюсь) спасибо!
Anton
а есть какие-то менее нагруженые варианты?
Anton
чтобы посмотреть просто общую концепцию
Slava
там не особо нагружено
Slava
https://blue-jay.github.io/models/#update-an-item
Slava
в каждый метод ты передаёшь инстанс базы данных просто
Slava
и напрямую sql запросом всё выбираешь
Anton
не, я не конкретно про работу с моделями сейчас, а в целом про пример с MVC
Slava
ну в этом же примере есть и контроллер и шаблон
Anton
да, это я вижу, но для меня это пока сложная структура
Anton
тут много стронних зависимостей и взаимосвязей
Anton
даже прочитав этот код, я не смогу написать свое простенькое приложение с MVC структурой
Anton
я бы хотел посмотреть на пример с минимумом лишного
Anton
просто общую суть с best practices в архитектуре
Yehor
Посмотри на картинку которая описывает MVC. На практике это просто три папки с кодом (конроллер, шаблон и работа с базой) вместо одной.
Anton
как выглядит MVC я знаю
Anton
я хочу увидеть на простом примере, как он применяется в го с системой пакетов
MXLTN
привет, а вот если я в рамках одного реквеста с веба создаю 10 инстансов, мне нужно делать 10 sql.Open или можно както копировать соединение? типа в монго.Copy()
MXLTN
метода такого не нашел
MXLTN
если юзать тот же конект то выпадает ошибка [mysql] statement.go:27: invalid connection