Andrei 🦉
относительные импорты - зло
Maksim (Ellrion)
скорее всего линтер именно на это и ругается. один и тот же пакет подключается под разными именами "../logger" (https://github.com/ircop/pinger/blob/d9fe714d72f596deada68fa0132c69227ee772e4/pinger/pinger.go#L5) и "./logger" используйте общепринятый полный путь
Maksim (Ellrion)
просто даже если юзать относительные то хотябы "<имя_корневой_директори>/logger" а не так как у вас
Wingman
понял, спасибо
Nurzhan
понял, спасибо
Кстати, можно использовать gb в качестве сборщика, по мне, это удобно https://getgb.io/
Wingman
спасибо, изучу)
Nurzhan
да не за что)
🏁Александр
{{range $page := .Pages}} <li class="page-item"><a class="page-link" href="?page={{$page}}">{{$page}}</a></li> {{end}} неет хелп, что-то он матерится на range can't iterate over Pages []int
heavycharged
зачем тебе $page
🏁Александр
да я пытаюсь пагинацию отрендерить
🏁Александр
цикла фор в шаблонах нету
🏁Александр
извращения пошли 🙂
heavycharged
просто делай {{range .Pages}} {{.}} {{end}}
heavycharged
точка это элемент из слайса Pages твоего
heavycharged
советую написать свой пагинатор, и шаблон под него. я тоже с пагинатором намучился
🏁Александр
не, такая же хурма
🏁Александр
не дает ходить по слайсу
heavycharged
все дает
heavycharged
просто ты не так делаешь что-то
heavycharged
https://i.imgur.com/9pAV7eh.png
heavycharged
я вот так делал
heavycharged
и подключал в нужное мне место этот пагинатор, передавая в него максимальное количество элементов, текущую страницу, количество результатов на странице
🏁Александр
.Links какой тип имеет?
heavycharged
Links это []Page, там есть N - это int, и URL - страница, Active - bool, если текущая
heavycharged
https://play.golang.org/p/aRMWeLoMgJx
heavycharged
вот, он итерирует спокойно
heavycharged
.Pages у тебя может быть не .Pages, а контекст сместился
heavycharged
если ты в шаблон передал
🏁Александр
да работает
Nurzhan
recoilme
Всем привет! Написал аналог bolt.db: https://github.com/recoilme/slowpoke/ Это key/value база данных (может работать и как встраиваемое хранилище или как рест http сервер) Внутри никакой магии и более удобное апи. Ключевая особенность - комбинирование хранения. Ключи хранятся в памяти (как в мемкэшед), а значения в файлах. Есть иттераторы, булкинсерт, паджинация и простые индексы. Очень простое и гибкое апи. Посмотрите, пожалуйста. Может быть есть какие то замечания/пожелания по коду или апи. Я не так давно в go. Спасибо!
.
Английский в README режет глаз.
+, стоит прогнать через грамарли
recoilme
Ох, спасибо парни
Stanislav
название отличное)
и тесты подтверждающие)
recoilme
Ну в названии вся боль сосредоточена. Болт неплохо показывал себя на синтетических тестах, но с ростом базы - а) стал насиловать винт на 100% б) - стал нещадно тормозить. Скорость не была целью, целью было предсказуемое поведение с ростом базы. Ну и по скорости в итоге слоупоке не уступил болту, а где то даже и быстрее на порядки. Хотя это не было целью
Sergey
Есть какой нибудь способ при использовании squirrel при получении больше одной строки перегнать их все в срез без цикла и rows.Next()?
Sergey
Или такой способ единственный? for rows.Next() { str := "" err = rows.Scan(&str) if err != nil { log.Println(err) continue } result = append(result, &str) }
Andrei 🦉
Можешь в суслике просто генерить запрос, а исполняьь его через sqlx, он тебе даст возможность мапить в слайсы и структуры
Andrei 🦉
Но под капотом там будет рефлексия со всеми вытекающими
Anonymous
как узнать разрядность системы если сам процесс всегда 32бит?
Anonymous
может просто чекать наличие папки Program Files (x86)?
Anonymous
🤔🤔🤔
иьг71
https://golang.org/pkg/runtime/internal/sys/#GOARCH там нету случайно?
Anonymous
https://golang.org/pkg/runtime/internal/sys/#GOARCH там нету случайно?
runtime.GOARCH пишет 386 хотя у меня система 64бит
Michael
Dmitry
как узнать разрядность системы если сам процесс всегда 32бит?
под виндой прочекать env переменную PROCESSOR_ARCHITECTURE
Dmitry
как это сделать?
os.Getenv("PROCESSOR_ARCHITECTURE")
Anonymous
os.Getenv("PROCESSOR_ARCHITECTURE")
все равно пишет x86
Anonymous
я компилирую его для 32бит
Anonymous
запускаю в системе 64 бит
Dmitry
все равно пишет x86
а можешь показать весь вывод env?
Dmitry
что оттуда нужно?
вывод os.Environ()
Nurzhan
Попробуй os.Getenv("PROCESSOR_ARCHITEW6432")
Dmitry
что оттуда нужно?
а как ты билдишь под x86? я пытаюсь сбилдить под x86, но вывод env выдаёт x64
Anonymous
но если проект с CGO то так чет не работает
Anonymous
у меня на компе обе версии го под 64 и 32
Nurzhan
у меня на компе обе версии го под 64 и 32
env PROCESSOR_ARCHITEW6432 не помогло?
Anonymous
нет
Глянь-ка сюда, может то, что нужно https://github.com/matishsiao/goInfo
recoilme
Название хорошее. Посмотрел в код, ты глобально хранишь инстансы в мапе и управляешь ими через функции пакета. Почему все эти методы Open, Close, Keys нельзя определить над типом DB? Причем что ты пытаешься инстансы бд хранить в мапе как кеше
Ну это по двум причинам. 1 - для простоты имплементации серверов. Над базой есть http сервер - https://github.com/recoilme/slowpoke/blob/master/simpleserver/slowpokesrv.go - и в хендлерах просто прописан, например Set(что-то) Так как Open и прочая магия имплементированны прямо в апи- серверу нет нужды беспокоиться о получении инстанса дб, открытии и прочем. Он просто коммандует set , а уже на стороне апи происходит вся магия. Это побочный эффект от того, что можно на лету создавать файлы и папки вложенные для любых стораджей (вторая причина). В других базах - ты открыл один файл и работаешь с ним - а тут они на лету создаются. Все что остается серверу это закрыть открытые файлы в случае kill / ctrl+c и тп. А возможность создания на лету стораджей - это для гибкости во всем теле. В текущем проекте - тысячи сайтов - и я хочу хранить их аккуратно по папкам, а не в куче.
Anonymous
Nikita
не определяет разрядность вообще
а так? https://stackoverflow.com/questions/33790814/determining-if-current-process-runs-in-wow64-or-not-in-go
Васильев Виктор
А почему нет структуры базы а только глобальные функции? Плюс можно было бы привести к интерфейсу общему и иметь мок для тестирования, а также избавится от зависимостей. В го мощнейшие интерфейсы а ты их выкинул в окно и позволяешь работать только с тем что прибил гвоздями
Васильев Виктор
Всем привет! Написал аналог bolt.db: https://github.com/recoilme/slowpoke/ Это key/value база данных (может работать и как встраиваемое хранилище или как рест http сервер) Внутри никакой магии и более удобное апи. Ключевая особенность - комбинирование хранения. Ключи хранятся в памяти (как в мемкэшед), а значения в файлах. Есть иттераторы, булкинсерт, паджинация и простые индексы. Очень простое и гибкое апи. Посмотрите, пожалуйста. Может быть есть какие то замечания/пожелания по коду или апи. Я не так давно в go. Спасибо!
Artem
не определяет разрядность вообще
не могу понять зачем ее определять. вы собираете же под конкретную архитектуру и уже знаете разрядность
Васильев Виктор
Это я неправильно сделал форвард вместо ответа. Присморись :)
recoilme
А почему нет структуры базы а только глобальные функции? Плюс можно было бы привести к интерфейсу общему и иметь мок для тестирования, а также избавится от зависимостей. В го мощнейшие интерфейсы а ты их выкинул в окно и позволяешь работать только с тем что прибил гвоздями
мне нравится state less концепция. У базы нет состояния, тебе не нужно беспокоиться о стэйте, открыт ли файл, закрыт ли, прочитаны ли ключи в память или нет. Я теряю на этом какое то колличество наносекунд, но взамен получается гораздо больше
Васильев Виктор
@recoilme Плюс у тебя синхронная запись которая умрет при многопоточном подходе с частыми записями
Васильев Виктор
Можно бить на чанки и потом их сращивать
Васильев Виктор
а про интерфейсы я к тому что вдруг я захочу иметь in memory базу?