здравствуйте ищу человека который готов за денюжку написать десктопное веб приложение на go с модулем WebUI Go который использует в качестве граф интерфейса браузеры которые уже установлены.
https://github.com/webui-dev/go-webui
Ладно, не больно то хочется разбираться😀
Мира и добра🖖 и пусть ваш код будет прекрасен💚
Он не говорил что-то конкретно про вас или про кого-то другого, он абстрактно про похожие ситуации которые встречаются
Читать полностью…так они же го микрофреймворки. Имхо можно любой брать смело с максимальным коммунити. Разницы в перфе все равно нет
Читать полностью…Та просто прикалывает, мамины программисты делают свои пет проекты без фраемворка, т к у них сова на глобус не находит , и полоскают людям в чате мозги
Читать полностью…Ищем консультанта-разработчика по GRPC библиотеке GOLANG
Оплата договорная, удаленно
Добрый день. Изучаю го чуть больше полугода, хотел бы найти себе наставника/напарника. Вместе веселее и интереснее как никак
Читать полностью…здравствуйте ищу человека который готов за денюжку написать десктопное веб приложение на go с модулем WebUI Go который использует в качестве граф интерфейса браузеры которые уже установлены.
https://github.com/webui-dev/go-webui
Вам что, 10 лет реагировать так? Если считаете что отвечать не нужно/ не достойно/ бессмысленно, то не отвечайте🤷♂
Что для вас очевидно, для других может быть инсайд.
Джаваскрипт для ракет))
Кстати на днях просто спросил в беседе знакомых фронтовиков "Почему вы пишите на JS?" (в подобном ключе вопрос был) и на меня из-за одного вопроса тонну говна вылилось
Это был сарказм, не слушайте никого, используйте то что будет ефективнее, если вы не делаете по для ракет, то фраемвок норм
Читать полностью…тут нельзя фраемворки, только чистый го и sql, максимум пакет шттп возьми, и не вздумай ничего другого использовать
Читать полностью…#vacancy #вакансия #middle #golang #remote #crypto #blockchain
Компания: ALEX GROUP COMPANY
Вилка: от 4800 до 5600 USD
Вакансия: Middle Golang Developer
AlexGroup - компания занимающаяся созданием и переводом контента на криптовалютную тематику носителями. За 8 лет работы сотни крупнейших компаний стали нашими клиентами. Ищем специалиста для развития нового бизнеса на базе блокчейна.
Обязанности:
— Разработка и поддержка высокопроизводительного программного обеспечения на языке Golang для блокчейн-проектов.
— Участие в проектировании и архитектуре блокчейн-решений.
— Работа с децентрализованными системами и смарт-контрактами.
— Участие в разработке и оптимизации блокчейн-протоколов и алгоритмов.
— Тестирование, отладка и поддержка разработанного кода.
— Сотрудничество с другими членами команды для обмена знаниями и опытом.
Требования:
— Опыт работы как Golang Developer, не менее 2-3 лет.
— Опыт разработки на блокчейн-платформах и протоколах
— Понимание принципов децентрализации и смарт-контрактов.
— Умение писать чистый, эффективный и масштабируемый код.
— Знание систем контроля версий, таких как Git.
— Опыт работы в Agile-командах и хорошее понимание Agile-процессов.
— Коммуникативные навыки и умение работать в команде.
Мы предлагаем:
— Fulltime-работа. Возможен гибкий график
— Конкурентная ЗП от 4800 до 5600 USD., подробнее обговорим лично
— Работа в одной из топовых команд в своей сфере
— Возможность работы полностью на удаленке
— Курсы по повышению квалификации от компании
Контакты: @limar_sheref
Доброго времени суток, не могу разобраться с мок тестами, сгенерировал моки для Client интерфейса и пытаюсь написать pg_test.go , как возникает проблека в функции mock
mock.On("Begin", ctx).Return(&pgx.Tx{}, nil)
// file: pg.go
//go:generate mockery --dir . --name Client --output ./mocks
type Client interface {
Exec(ctx context.Context, sql string, arguments ...interface{}) (pgconn.CommandTag, error)
Query(ctx context.Context, sql string, args ...interface{}) (pgx.Rows, error)
QueryRow(ctx context.Context, sql string, args ...interface{}) pgx.Row
Begin(ctx context.Context) (pgx.Tx, error)
}
type PostgresRepo struct {
pool Client
}
func NewPostgresRepo(pool *pgxpool.Pool) *PostgresRepo {
return &PostgresRepo{
pool: pool,
}
}
//go:generate mockery --dir . --name Client --output ./mocks
type Client interface {
Exec(ctx context.Context, sql string, arguments ...interface{}) (pgconn.CommandTag, error)
Query(ctx context.Context, sql string, args ...interface{}) (pgx.Rows, error)
QueryRow(ctx context.Context, sql string, args ...interface{}) pgx.Row
Begin(ctx context.Context) (pgx.Tx, error)
}
type PostgresRepo struct {
// pool *pgxpool.Pool
pool Client
}
func NewPostgresRepo(pool *pgxpool.Pool) *PostgresRepo {
return &PostgresRepo{
pool: pool,
}
}
func Save(ctx context.Context, user *model.UserRegister) error // ...
func FindByID(ctx context.Context, id uint) (*model.UserSQL, error) // ...
func FindByEmail(ctx context.Context, email string) (*model.UserSQL, error) // ...
// file: users.go -------------------------------------------------------------------------------
type PostgresSQL interface {
Save(ctx context.Context, user *model.UserRegister) error
FindByID(ctx context.Context, id uint) (*model.UserSQL, error)
FindByEmail(ctx context.Context, email string) (*model.UserSQL, error)
FindByUsername(ctx context.Context, username string) (*model.UserSQL, error)
Update(ctx context.Context, user *model.UserSQL) error
Delete(ctx context.Context, id uint) error
DeleteToken(ctx context.Context, id uint, token string) error
DeleteAllTokens(ctx context.Context, id uint) error
GetAll(ctx context.Context, orderBy string, offset int, limit int) ([]*model.UserSQL, error)
}
// file: pg_test.go ------------------------------------------------------------------------------
func TestPostgresRepoSave(t *testing.T) {
mock := mocks.NewClient(t)
repo := PostgresRepo{mock}
type args struct {
ctx context.Context
user *model.UserRegister
}
tests := []struct {
name string
mock func(ctx context.Context, input *model.UserRegister)
input args
wantErr bool
}{
{
"ok",
func(ctx context.Context, input *model.UserRegister) {
mock.On("Begin", ctx).Return(&pgx.Tx{}, nil)
},
args{
ctx: context.Background(),
user: &model.UserRegister{
Username: "test",
Email: "test@example.com",
Password: "testpassword",
},
},
false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
tt.mock(tt.input.ctx, tt.input.user)
err := repo.Save(tt.input.ctx, tt.input.user)
if tt.wantErr {
require.Error(t, err)
} else {
require.NoError(t, err)
}
mock.AssertExpectations(t)
})
}
}