Size: a a a

2020 June 27

AZ

Antto 👾 Zobnin in Go-go!
@mr_tron
Это плохо. Не делайте так
Ну, не то, чтобы плохо, но на гибкости и комплексности системы сказывается, да 🥴
источник

М

Марк in Go-go!
Zver
Если просто страницы грабить, то есть
https://github.com/gocolly/colly
К сожалению там еще и редиректы от куратора надо делать, то есть как бы ждать полный networkidle2
и только потом собирать рендернутую страничку. причем классно совпало - жирные площадки по защите от парсинга хуже чем простенькие =) но понятно - админы видят растущий траффик, радуются, потом видят куорреляцию и плакают, банят все к чертям, а жирным ребятам пофигу =) так что... какий-нибудь циан парсится публичными проксями на сотни тысяч офферов в секунду
источник

ЮВ

Юрий Вельмесов... in Go-go!
Ребята подскажите, по структуре проекта.
Как правильно хранить структуры и интерфейсы?
У меня сейчас структуры находятся в тех же пакетах где и используются.

Правильно ли это?

Или должна быть отдельная папка под структуры и интерфейсы?
А в нужных местах в разных пакетах, я делаю импорты необходимых структур?

Вообще есть рекомендации по структуры гошных проектов?

Организация папок?
Есть доки где или примеры  труе практики.
источник

AZ

Antto 👾 Zobnin in Go-go!
Довольно широкий вопрос, но если коротко - все норм

Про структуру проекта - можно взять отсюда банально из-за того, что ее уже многие используют. https://github.com/golang-standards/project-layout
источник

DB

Dmitry Bryn in Go-go!
Юрий Вельмесов
Ребята подскажите, по структуре проекта.
Как правильно хранить структуры и интерфейсы?
У меня сейчас структуры находятся в тех же пакетах где и используются.

Правильно ли это?

Или должна быть отдельная папка под структуры и интерфейсы?
А в нужных местах в разных пакетах, я делаю импорты необходимых структур?

Вообще есть рекомендации по структуры гошных проектов?

Организация папок?
Есть доки где или примеры  труе практики.
источник

@

@mr_tron in Go-go!
Юрий Вельмесов
Ребята подскажите, по структуре проекта.
Как правильно хранить структуры и интерфейсы?
У меня сейчас структуры находятся в тех же пакетах где и используются.

Правильно ли это?

Или должна быть отдельная папка под структуры и интерфейсы?
А в нужных местах в разных пакетах, я делаю импорты необходимых структур?

Вообще есть рекомендации по структуры гошных проектов?

Организация папок?
Есть доки где или примеры  труе практики.
Правильно. Не надо выносить структуры
источник

ЮВ

Юрий Вельмесов... in Go-go!
@mr_tron
Правильно. Не надо выносить структуры
Спасибо!
источник

SZ

Sergey Zhdanov in Go-go!
Марк
Приветствую, подскажите по такой конструкции кода и как лучше переделать
import (
 "database/sql"
 ...
 _ "github.com/go-sql-driver/mysql" // приходится делать импорт так, иначе редактор убирает импорт и тогда мускул не пашет
)

...

db, err := sql.Open("mysql", cfg.GOMYSQL) // И где-то там вдали происходит это
а у вас какой редактор? Видел по этому случаю заведенный баг для vscode, и его как-будто пофиксили, но все равно проявляется. Помогает только явное использование чего-нить из пакета-драйвера
источник

М

Марк in Go-go!
Vocode, все норм, мне объяснили что да как
источник

SZ

Sergey Zhdanov in Go-go!
меняли что-то в конфиге?
источник

Y

Yevhenii in Go-go!
Марк
Возможно
Тебе понадобиться запулить туда nginx+apache+mysql
либо(заткните уши) - поставить мускул + expressjs
А зачем еще apache?
источник

М

Марк in Go-go!
Yevhenii
А зачем еще apache?
Разделить статику и динамику
источник

Y

Yevhenii in Go-go!
Владимир Столяров
Потому что внутри пакета go-sql-driver при импорте вызывается init, который регистрирует драйвер в реестре для database/sql
О, а я думал еще как это устроено, спасибо)
источник

Y

Yevhenii in Go-go!
Марк
Разделить статику и динамику
Все, виду ниже написали
источник

Y

Yevhenii in Go-go!
Хм, я вроде где-то видел, что init() использовать не рекомендуют. Я что-то не так понял и это нормальная практика, или все не так просто?
источник

AZ

Antto 👾 Zobnin in Go-go!
Если есть возможность - лучше проинициализировать все ключевые штуки в мейне
источник

Y

Yevhenii in Go-go!
Antto 👾 Zobnin
Если есть возможность - лучше проинициализировать все ключевые штуки в мейне
А почему?
источник

с

сонная википедия... in Go-go!
потому что код всегда выполняется при импорте пакета
потому что что-то происходит где-то и вы об этом, скорее всего, не знаете
источник

AZ

Antto 👾 Zobnin in Go-go!
Скорее всего в init() присутствует логика либо старта приложения, либо логика инициализации пакета/библиотеки.
В первом случае можно воспользоваться init, но это никак не будет отличаться от вызова того же самого в мейне.
Во втором случае, если у библиотеки есть инициализация - то, скорее всего, в ней есть логика, которая может вернуть ошибку - в таком случае лучше явно вернуть ошибку вызывающему пакет, чем, например, вызывать панику
источник

AZ

Antto 👾 Zobnin in Go-go!
источник