Eugene
os.Getenv("variable")
В итоге так и сделал, мороки меньше оказалось. Всем спасибо
Artur
Небольшой туториал по дженерикам https://youtu.be/kKu9HuOvaUY
Sergey
Всем привет, ребят, подскажите, пожалуйста, для обычной vs, не code, нет возможности писать на go со всеми плюшками vs в плане отладки, компиляции и т.д.?
Sergey
Или может посоветуете годную фри ide для go
Bagasl
Это самая годная фри IDE
Sergey
Это самая годная фри IDE
ну это же не совсем IDE, а редактор кода скорее
Alexander
чем не ide?
Sergey
я просто привык к обычной vs
Sergey
в code есть компиляция, дебаггинг? просто даже не устанавливал его)
Alexander
дебаг есть
Sergey
а компилировать через терминал?
Alexander
Sergey
ещё нагуглил liteide, вроде для go прям заточена, кто-нибудь знает и юзает её?
Andrey
а компилировать через терминал?
Даже код сам пишется, и язык толком знать не надо
Sergey
отлично, установлю, спасибо)
Bagasl
а компилировать через терминал?
а вот с этим в чем сложность не понял
Bagasl
это же не си
Sergey
а вот с этим в чем сложность не понял
ну набирать в терминале go run и т.д. каждый раз, дольше же, чем просто на кнопку нажать
Sergey
ага
Sergey
стрелку вверх нажать?
а, сорян, не так прочитал
Sergey
ну да, тоже быстро, к пред. команде типа вернуться)
Bagasl
а так есть шорткат на запуск точно такой же
Sergey
я просто не знал, что в vs code есть встроенный терминал, думал это просто редактор кода
Vitaly
👍
🅞leksiy
ну набирать в терминале go run и т.д. каждый раз, дольше же, чем просто на кнопку нажать
На всякий случай, в терминале каждый раз набирать не нужно, просто нажимаешь стрелку вверх-вниз и выбираешь ранее введенную команду. Если дебагер не нужен и нужно запустить связанные проекты без докера, то в вс коде добавляешь несколько каталогов в проект, в каждом открываешь вкладку терминала vscode и "go run .". Вполне удобно, не нужно никуда выходить из редактора.
Liqiudationmarket.ru
Привет, ищем мидл разработчика в команду международного проекта. Навык разработки парсеров. В лс
Alexandr
всем привет, помогите что то туплю: data[0:100] возвращает type byte[] а мне надо byte[100]
Bagasl
Но зачем тебе нужен массив?
Alexandr
Но зачем тебе нужен массив?
что бы хранить в памяти только необходимые байты остальные меня не интересуют
Bagasl
в куче
Тогда твой массив на 100 байт занимает 112 байт в куче 🙂
Bagasl
если у тебя 32-х битная система - слайс на 100 элементов займёт те же 112 байт
Bagasl
на 64 - 128.
Bagasl
Стоит ли эта экономия использования массива?
Alexander
Но процом платишь за конверсии в слайс и обратно
Alexander
Такие оптимизации надо сначала через бенчмарки прогонять, а уже потом внедрять. Очень сомнительно
Alexander
А до этого надо выяснить что этот кусок стоит оптимизировать
Alexandr
Но процом платишь за конверсии в слайс и обратно
везде нужен где-то компропис память / проц
Alexandr
А до этого надо выяснить что этот кусок стоит оптимизировать
тут и так понятно когда в памяти лежит куча данных которые тебе не нужны, оставляешь только то что нужно и работаешь только с тем что нужно, лучше пусть проц обрежет, чем лишних пару гигов в памяти будут болтаться и к ним через слайс обращаться
Alexander
Пару гигов... А на деле пару килобайт, когда рантайм про запас будет держать несколько мегабайт, а освободившуюся память ещё не понятно когда соберет
Alexandr
в го быстро собирает по пустым ссылкам, к тому же если сперва все данные подготовить и больше не возвращаться к начальной информации
Alexander
лучше пул слайсов байтов использовать. пускай лишнее будет лежать, но гц не работает и выделять заново не знаю. хотя не в курсе, что у тебя за пример, но в долгоживущих вещах оно часто так
🅞leksiy
да а то что осталось от data ~ 900 байт - gc соберет
Все, что осталось он соберет, не важно, взял ли ты в слайс или массив первые сто байт. Ну если ты понимаешь, как работает capacity.
Alexandr
Все, что осталось он соберет, не важно, взял ли ты в слайс или массив первые сто байт. Ну если ты понимаешь, как работает capacity.
предположим у нас есть данные длинною в 1000 байт в колличестве миллион data = map[int][1000]byte длиною в 1000000 ~ гиг нас для работы интересуют только первые 100 байт из каждого масcива после загрузки данных он будет хранить все данные пока может встретится обращение к массиву если при загрузке данных мы сразу отрежем не нужное и у нас будет data = map[int][100]byte ~100 мегов
🅞leksiy
Остальное очистит gc, если ссылок на data не останется
Alexandr
Остальное очистит gc, если ссылок на data не останется
ну так мне нужен data (но только с первыми 100 байтами) допустим ... ищю совпадения между ними
🅞leksiy
data = data[0:100:100]
Alexandr
data = data[0:100:100]
ну так он все равно по типу возвращает byte[] data := make(map[int][100]byte, count) z := input[:100:100] data[i] = z Cannot use 'z' (type []byte) as type [100]byte
🅞leksiy
ну так он все равно по типу возвращает byte[] data := make(map[int][100]byte, count) z := input[:100:100] data[i] = z Cannot use 'z' (type []byte) as type [100]byte
Я тебе о слайсах, а ты о массивах) Мой совет, изучи структуры данных в go, прежде чем заниматься таким.
Alexandr
Если смотреть на оптимизацию, то стоит задуматься, стоит ли грузить гиг данных, чтобы потом отрезать сто байт
это все псевдо код, понятное дело что если есть возможность то лучше сразу их не грузить, но если они уже как бы есть их нужно обрезать в этом изначально и был вопрос, просто давно не работал с го и подзабыл как делается
Alexandr
Я тебе о слайсах, а ты о массивах) Мой совет, изучи структуры данных в go, прежде чем заниматься таким.
хотите сказать, что если я возьму слайс от масива то масив можно удалить или его подберет gc за ненадобнастью, на что тогда будет указывать слайс ?
🅞leksiy
Чтобы скопировать в массив, выше написали способ. В моем варианте ты получаешь слайс, с указателем на тот же внутренний массив (от оригинального слайса), без копирования. Но отбрасываешь лишние данные.
Alexandr
А ты гиг в массив получаешь, не слайс?
получаю не разом, а массивами по 1000 байт
Алексей
Ребята. Что нужно сделать, чтобы функция из одного модуля виделать в другом?
Алексей
main. go и deb.go. func debugFoo() {}
🅞leksiy
main. go и deb.go. func debugFoo() {}
Файлы в одном каталоге?
Алексей
Да
🅞leksiy
Просто вызывай функцию в другом файле, в одном каталоге может быть только один пакет
Алексей
Пишет undefined debugFoo
🅞leksiy
Ты как запускаешь, go run main.go ?
🅞leksiy
Запускай go run . в каталоге
Алексей
Да
Алексей
А. Спс!
Eugene 🇺🇦 | KIRA Staking | WON'T PM YOU FIRST
Ребята, читал историю чата на предмет создания deb пакетов. Кто-то из вас сталкивался с задачей упаковать go приложение в deb пакет с возможностью CI