Ответы пользователя по тегу Go
  • Как выбрать хостинг для веб приложения?

    @chromimon
    1) Как и какой выбрать хостинг, чтобы было удобно деплоить. Vps брать или что-то вроде Heroku, где хостинг сам все разворачивает. Что лучше быьрать чтобы РКН не заблочили.


    Google AppEngine - дико удобно.
    Только вот если вы завязались на Postgres - это будет не дешево. Дешево - это если использовать Google Datastore.

    РКН не так уж и мелкие проекты лочит, это больше раздуто и политизировано.
    Наш проект на Google AppEngine если и был недоступен, то только по нашей вине или вине Google (да, да, да - облака тоже глючат). Проекту уже более 7 лет.

    2) Что делать в случае блокировки твоих серверов РКН. И как к этому подготовиться.


    Взводить Reverse Proxy в РФ, который через VPN будет перекачивать данные.
    У нас так сделано, но для другой цели - потому что Google блокирует Крым.
    Отлично работает, производительность подседает из-за этого незначительно.
    Стоимость хостинга под reverse proxy - копейки.

    Затем связываться с РКН и требовать разблокировки.

    1) Так как если вы не занимаетесь ничем противозаконным - то это просто их техническая ошибка.
    2) Если это по решению суда и судебная ошибка - или идти в суд.
    3) Или, если вы уверены, что вы заниматесь противозаконным - то что вас удивляет что вас блокируют.

    Те сайты, что пострадали от блокировок незаконно - заграничные, которым плевать на российских клиентов, они ни сном ни духом и не жаловались на технические ошибки - потому и оставались заблокированными.

    Те, что отслеживали свою доступность из России - были разблокированы очень быстро.

    ----------------------------------------
    Если у вас небольшой проект - лучше использовать PaaS, да.
    Но если у вас более перспективный - лучше заводить свой деплой, чтобы не подсесть на vendor lock.
    Из простых инструментов - Dokku,
    понавороченнее - Flynn.io (но он тоже простой по сути), поддержка Postgres там точно есть,
    ну а самый универсальный и перспективный под любые масштабы - это Kubernetes.
    Впрочем, если Kubernetes покажется сложноватым, то можно собрать самому на базе Nomad, Consul, Vault и какого нибудь drone.io.


    Vps брать или что-то вроде Heroku, где хостинг сам все разворачивает.
    ...
    В перспективе нагрузка на приложение будет расти.


    Неужели вы умудрились написать столь универсальное приложение, которое готово под PaaS и под масштабирование (а это очень специфичная архитектура),
    но при этом написали универсально под любой произвольный PaaS?

    Однако при этом не знаете как развернуть?
    Не верю.

    Если вы написали в старо-классическом стиле без учета "12 факторов" - то вам теперь придется в корне все переделывать.
    Ответ написан
    Комментировать
  • Есть смысл написать свою базу данных с использованием txt файлов в go?

    @chromimon
    Посмотри на BoltDB, embedded key-value СУБД, написанную на чистом Go,
    поразись крутости функционала и пойми что велосипед писать не нужно.

    Если для практики - да имеет смысл.
    Если для просто начать использовать - используй BoltDB, она реально крута.

    P.S.:
    В документации к BoltDB описаны плюсы и минусы других альтернатив,
    возможно тебе будет нужна не сама BoltDB, а ее альтернативы (к сожалению они не на чистом Go, что вызывает некоторые проблемы с компиляцией, поэтому я предпочитаю использовать BoltDB)
    Ответ написан
    Комментировать
  • Можно в golang управлять row и col вывода на консоль и очишять ее?

    @chromimon
    https://github.com/nsf/termbox-go
    написано нашим человеком из Екатеринбурга,
    который еще известен тем, что написал GoCode - синтаксические подсказки по Go, которыми пользуются все программистские редакторы.
    Так что в качестве этого кода можно быть уверенным, хотя я лично его и не пробовал, а рекомендую просто потому что он есть и написан опытным программистом.
    Ответ написан
    1 комментарий
  • Embedded SQL на GO?

    @chromimon
    GoLevelDB - вовсе не на чистом Go. И это вовсе не SQL, а key-value.

    Если вам БД типа key-value, написанную на чистом Go, то это BoltDB. Отличнейшая вещь для использования как emedded.

    Если вам timeseries-БД на Go - это InfluxDB

    Прочие см. тут:
    https://github.com/avelino/awesome-go#database
    Ответ написан
    Комментировать
  • Вызвать функцию имея название функции в строке?

    @chromimon
    Можно только через попу это организовать. Папа Стифлера в соседнем ответе показал как. Большое количество рефлексии в коде примера и показывает, что это неправильный путь. Только как крайняя мера.

    А вот непротиворечащая идеологии Go вещь - это будет с явным указанием типов:
    package main
    
    import (
    	"fmt"
    )
    
    func add(a, b int) int {
    	return a + b
    }
    
    func sub(a, b int) int {
    	return a - b
    }
    
    func main() {
    
    	table:= make(map[string]func(int,int)int)
    	
    	table["func1"] = add
    	table["func2"] = sub
    	
    	fmt.Println(table["func1"](5, 3))
    	fmt.Println(table["func2"](5, 3))
    }


    Кода значительно меньше, типы - жестко определены.
    Ответ написан
    3 комментария
  • Импортировать код в основной файл?

    @chromimon
    1) Зачем их импортировать? Если вы их не используете.

    2) Как только вы начнете их использовать - их можно будет автоматически импортировать через goimports

    3) В консоли вывести все директории и вывод консольной функции записать в файл. Например, так:
    dir /AD /B > myfile
    Ответ написан
    3 комментария
  • Как скомпилировать Go код на Windows под Linux?

    @chromimon
    CGO_ENABLED=1

    Даже непосредственно на Windows сие было бы не просто.
    Нужен компилятор С, поддерживающий целевую платформу.

    Столкнувшись с подобной проблемой я был лишний раз подумал - а не тянул ли я внутри своей программы что то лишнее, что требует кроме компилятора Go еще и компилятор С.
    Ответ написан
    Комментировать
  • Можно ли организовать загрузку html без перезагрузки страницы, используя WebSocket?

    @chromimon
    К языку программирования Go, что у вас в тегах указан - это не имеет отношения.
    А имеет отношение к языку программирования JavaScript, но он у вас в тегах не указан.
    Ответ написан
    Комментировать