Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

rustler2000

погромист сикраш
  • 87
    вклад
  • 50
    вопросов
  • 157
    ответов
  • 35%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как маршалить одну и туже структуру в json с разным набором полей?

    rustler2000 @rustler2000 Автор вопроса
    погромист сикраш
    Вот так уже лучше, но в мапах приходится хранить анонимные типы (скорее всего в слайсах будет также)

    https://play.golang.org/p/e1w5-RVRE0w

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    // Canonical types
    type Aaa struct {
    	Field1 string
    	Field2 int
    	Field3 map[int]*struct {
    		Field4 int
    		Field5 string
    	}
    }
    
    func main() {
    	// Data
    	a := &Aaa{"string", -1, map[int]*struct {
    		Field4 int
    		Field5 string
    	}{}}
    	a.Field3[100] = &struct {
    		Field4 int
    		Field5 string
    	}{100, "text"}
    	a.Field3[200] = &struct {
    		Field4 int
    		Field5 string
    	}{200, "text22222"}
    
    	// Regular json marshal
    	b1, _ := json.MarshalIndent(a, "", "  ")
    	fmt.Printf("%s\n", string(b1))
    
    	// Alternative types
    	b2, _ := json.MarshalIndent(*(*struct {
    		Field1 string `json:"Typ"`
    		Field2 int    `json:"Prio,string"`
    		Field3 map[int]*struct {
    			Field4 int    `json:"-"`
    			Field5 string `json:"Text"`
    		} `json:"Map"`
    	})(a), "", "  ")
    	fmt.Printf("%s\n", string(b2))
    }
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Слышал, что go не очень подходит для написания сервисов с большим количеством бизнес логики, какое мнение у вас?

    rustler2000 @rustler2000
    погромист сикраш
    Нет
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Где вести баги для себя?

    rustler2000 @rustler2000
    погромист сикраш
    Github private repo
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Должен ли разработчик заниматься ручным тестированием?

    rustler2000 @rustler2000
    погромист сикраш
    >Иногда за такие косяки могут влепить штраф.

    Беги оттуда!!!

    Баги будут всегда - если начальство ожидает от тебя 0 багов, или снижает ЗП (при этом сами скорее всего не имеют даже definiton of done, жлобят на тест инженера), то ничего хорошего там не будет.
    Ответ написан более трёх лет назад
    6 комментариев
    6 комментариев
  • Как покрыть тестами _, err = w.Write(res)?

    rustler2000 @rustler2000
    погромист сикраш
    Это вот реально такой тест или просто проверки после Respond(w, x) вырезаны?

    Очевидно, что придется сделать свой ResponseRecorder который будет на Write выдавать ошибку.
    Типа https://play.golang.org/p/eqUpcDqPrKN
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Почему меняется указатель?

    rustler2000 @rustler2000
    погромист сикраш
    У горутин маленький стэк в начале, и это не стэк треда.
    Рекурсивный func f вызывает рост стэка (в го нет TCO и похоже не будет), и переаллокацию бОльшего стэка из другого size class (смотри tcmalloc) с последующим копированием.
    Смещение переменной в стэке осталось таким же, но адрес изменился.

    Ну а при fmt.Printf переменная в хипе и с постоянным адресом. Вроде на github было даже этому объяснение, из-за чего escape analysis так себя ведёт.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как сделать вывод названия ветки в консоль?

    rustler2000 @rustler2000
    погромист сикраш
    https://starship.rs/
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как сделать, чтобы make не ругался, если файлов нет?

    rustler2000 @rustler2000
    погромист сикраш
    Не make ругается а rm
    Добавь -f к rm и все будет ок
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как получить абсолютные пути к файлам в диапазоне директорий?

    rustler2000 @rustler2000
    погромист сикраш
    За вас никто путь парсить и фильтровать не будет. Это ваша логика.
    Но рекурсивно обходить мешает - https://github.com/golang/go/issues/11862.
    Там же рекомендуют https://github.com/bmatcuk/doublestar - сам использую. Либо ручная рекурсия.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Deploy сайта +Netlify, как развернуть несколько веток с использование поддомена?

    rustler2000 @rustler2000
    погромист сикраш
    Один сайт на реп/бранч. То есть на два бранча два сайта. Не помню, чтобы можно было с одного репа мультисайт поднять имея один "сайт" в панели нетлифи
    Ответ написан более трёх лет назад
    5 комментариев
    5 комментариев
  • Go build: Не удается найти пакет, дублируется src в пути поиска пакета, в чем ошибка?

    rustler2000 @rustler2000
    погромист сикраш
    Не нужен src в GOPATH
    export GOPATH=/var/www/go
    https://github.com/golang/go/wiki/GOPATH
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как запустить несколько раз один и тот же docker-compose?

    rustler2000 @rustler2000
    погромист сикраш
    Это делается через префикс - https://stackoverflow.com/questions/33045358/docke...
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как динамически выделить array [var]type?

    rustler2000 @rustler2000
    погромист сикраш
    Никак - ибо escape analysis ваш массив все равно может в хип положить.

    ```
    package main

    import (
    "fmt"
    )

    func z(i int) {
    var s [10]int
    for n := 0; n < i; n++ {
    s[n] = n
    }
    fmt.Printf("%v", s)

    }
    func main() {
    z(10)
    }

    ```

    ```
    $ go build -gcflags="-m" main.go
    # command-line-arguments
    ./main.go:12:13: s escapes to heap
    ./main.go:12:12: z ... argument does not escape
    ```
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как ( и какую) gui для Docker можно запустить на винде, чтоб админить по сети на linux машине?

    rustler2000 @rustler2000
    погромист сикраш
    Portainer
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Счего начать изучение DevOps?

    rustler2000 @rustler2000
    погромист сикраш
    https://dev.to/joehobot/devops-roadmap-5d0
    Ответ написан более трёх лет назад
  • Почему у меня в os.Args только 1 элемент?

    rustler2000 @rustler2000
    погромист сикраш
    Потому что go run компилирует и запускает. А доп параметров ты не указываеш. Сделай go run main.go some args
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как писать на golang хорошо?

    rustler2000 @rustler2000
    погромист сикраш
    Читай чаще чужой код - PRы принятые и не принятые особо. CL на сам go с обсуждениями.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как копируют файлы из docker в хост при создании контейнера?

    rustler2000 @rustler2000
    погромист сикраш
    Никак.
    Точнее, только если кто-то в контейнере при отсутствие файлов их перезапишет.
    И стандартных mount ведёт себя точно также - никакого магического "merge"
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Приведите пример эффективного параллельного кода на Go?

    rustler2000 @rustler2000
    погромист сикраш
    https://medium.com/@_orcaman/when-too-much-concurr...
    https://github.com/klauspost/pgzip/blob/master/REA... см. Benchmark
    https://github.com/anthonynsimon/bild - ну тут нет бенмарков для GOMAXPROCS=1 vs real

    + блочное шифрование большого объёма данных
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как добавить ENTRYPOINT в Dockerfile без перезаписи CMD?

    rustler2000 @rustler2000
    погромист сикраш
    Докер запускает одно единственное приложение - строчка запуска
    ```${ENTRYPOINT} ${CMD}```

    Собственно https://docs.docker.com/engine/reference/builder/#cmd - "There can only be one CMD instruction in a Dockerfile. "

    Чтобы запустить в томже контейнере вротое приложение (что есть плохо) - надо чтобы энтрипойнт это сделал - к примеру в качестве ентрипойнт был свой скрипт

    ```
    #!/bin/sh
    app1 &
    app2
    ```
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • Следующие →
Самые активные сегодня
  • Drno
    • 8 ответов
    • 1 вопрос
  • meidi
    Dlaynet tenyalD
    • 3 ответа
    • 3 вопроса
  • rPman
    • 6 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 5 ответов
    • 0 вопросов
  • mayton2019
    • 4 ответа
    • 0 вопросов
  • work_jabir
    Джабир
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации