Slach
Cукалол. а по существу выражаться начнешь уже или как?
Anonymous
да, 16.04
Anonymous
сейчас проверю
Slach
ну тогда копипасти и тащи бекпорт последнего голанда из PPA
Slach
sudo apt-key adv —keyserver keyserver.ubuntu.com —recv-keys F27CAC73095AC1650A639CA7E1CC0F036DF706BE
а еще вот это надо чтобы подписаный пакет из PPA скачался
Kirill
Alexey
‘cause «gays» is gender-neutral
Kirill
вот почему не guys?
Alexey
потому что guys – это «парни», не gender-neutral
Kirill
под ЦА группы как-то больше подходит, насколько я знаю
Slava
А кто-то gorp или sqlboil пробовал?
Anonymous
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
это путь в никуда, так делать не надо
Slava
почему же, горутина
Slava
особенная, но горутина
Slava
я же пишу выше, что всего одна горутина выполняется
Yehor
понял
Anton
а есть какой-то корретный пример, где можно увидеть хорошую MVC структуру?
Slava
потому что
Slava
1) сложно тестировать
MXLTN
потом конект копируется и закрывается при каждом реквесте
Yehor
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