Roman
Так структуры ведь так же преспокойненько копируются. Хватит изобретать велосипед. Возьмите растовскую систему, она предельно проста и даёт профитов ровно столько, сколько нужно.
1. структуры не скаляры. При копировании структур возможен pointer aliasing, поэтому только скаляры могут копироваться без последствий 2. просто взять и встроить растовскую систему в Go это значит сделать из Go - Rust, а этого мы не хотим. Rust это отсутствие GC, это trait-based Generics, это долгая компиляция, это Ownership & Borrowing, и т.д. и т.п.
саша
1. структуры не скаляры. При копировании структур возможен pointer aliasing, поэтому только скаляры могут копироваться без последствий 2. просто взять и встроить растовскую систему в Go это значит сделать из Go - Rust, а этого мы не хотим. Rust это отсутствие GC, это trait-based Generics, это долгая компиляция, это Ownership & Borrowing, и т.д. и т.п.
Нет. Совершенно необязательно. Не нужно ни ownership'а, ни borrowing'а, если вы не собираетесь статически доказывать, что в один момент времени на одну и ту же память может быть либо одна мутабельная ссылка, либо множество иммутабельных.
саша
В расте система мутабельности/иммутабельности как у вас в пропосале, только без лишних путающих фич.
саша
каких например?
1. иммутабельные поля в структурах 2. мутабельная/иммутабельная передача не указателя в функцию
Roman
1. иммутабельные поля в структурах 2. мутабельная/иммутабельная передача не указателя в функцию
речь в моём пропосале не о полях, не о аргументах, не о возвратных значениях и не о receiver'ах речь об иммутабельных типах и mixed-mutability типах.
Roman
not mut var a int = 42, but var a mut int = 42
Roman
not mut var t *T = &T{} but var t mut *T = &T{} which can also be mixed: var t * mut T = &T{}
Roman
а типы эти вы можете использовать где угодно, хоть поля, хоть аргументы, хоть глоб. переменные
Olzhas
@onokonem спасибо за fileb0x
Olzhas
классная штука
Нави
а в го иммутабельные переменные никак не сделать, только константы, не умеющие получать значения из вычисления выражений?
Aleksey
как максимально кроссплатформенно демонизировать программу? и как вообще происходит дальнейшее управление такой программой? кто во что гаразд? или есть какой-то общепринятый протокол поверх, скажем юникс сокета? в линупсах systemd есть, но насколько он распространен?
https://github.com/takama/daemon https://github.com/kardianos/service Я когда-то, когда не было библиотек, сам демонизировался: https://github.com/Supme/gonder/blob/master/cmd/cmd.go#L177 Но не красиво, а переделать руки не доходят, но демонизируется независимо, но управление не нативное. Можно посмотреть как в телеграфе сделано, там под все платформы тоже инсталируется как сервис.
саша
в 2.0 обещают вроде
Ага, Роман лично обещает
Anonymous
И че?
в группе GO врядли будет спец по асму, иде и исполняемым форматам линковки! В статье же лишь первые шаги которые никак не говорят о структурах рутин и каналов , а без них это детский лепет IDA-шника что он и тут может! Вопрос же стоял в декомпилирование то есть бинари в GO!😊
Zver
в 2.0 обещают вроде
Ничего этого не будет, скорее всего.
Anonymous
шкаф из Perl, кресло из Phyton , стол из Rust , cтул из Java ! Ну вот теперь мы в новом языке GO😊
Anonymous
Опять пхп-макаки набижали в чат
Anonymous
Ну так а нахрен тогда браться за декомпиляцию, если ты не можешь в асм?
декомпилирование -воссоздание исходного кода источника то есть Golang (ни асм ни ИДА не при чем)
Anonymous
Anonymous
Ида может в псевдокод, напиши плагин для го и будет тебе щасте
сначала пусть ИДОВЦЫ откроют тайну рутин-каналов-Гарбадж коллектора а мы уж за ними! А найти название функций и точку входа это даже не кракнуть со смыслом а так себе
Нави
а го разве не опенсорс?
Anonymous
а го разве не опенсорс?
разговор о продукте написанном на GO , там все на борту!
Aleksey
спасибо, а есть best practices по этому вопросу? у меня приложение на расте, так что по всей видимости придется пилить самому
В простейшем случае запускаем дочерний процесс, записываем в файл его идентификатор и успешно выходим, оставляя ребёнка одного, он становится одиноким демоном. Чтоб его остановить, читаем из файлика идентификатор процесса и посылаем ему сигнал завершения, ждём что он завершился и выходим.
Tux
а если родитель завершается, разве спауны не завершатся?
Aleksey
Если успешно, то нет
Tux
оу, а если с кодом != 0?
Aleksey
Там как-бы не ребёнок, а запуск другой/себя программы
Tux
форк?
Aleksey
Но запускатор уходит
Tux
я понял, паходу форкнуть нужно.
Aleksey
Там в моём ужасе, что по последней ссылке, должно быть понятно
саша
why?
какая польза от такого исследования, кроме обеспечения работой нескольких научных сотрудников?
p0rsche
Привет! Вопрос такой - как добавить к литералу тега в структурах еще одно поле? Пример - структура type Test struct { test URL string json:"test" } , мне нужно туда добавить для redis тэг, возможно ли?
p0rsche
redis:"test"
p0rsche
т.е. `json:"test" redis:"test"`
Aleksey
Да
Daniel
Так структуры ведь так же преспокойненько копируются. Хватит изобретать велосипед. Возьмите растовскую систему, она предельно проста и даёт профитов ровно столько, сколько нужно.
Коллега, вы тут регулярно раст пропагандируете. Но как-то без подробностей. Расскажите нам, пожалуйста, в чем состоит растовская система, и почему вы думаете, что она подойдет
🏁Александр
оффтоп же будет
Daniel
Почему?
🏁Александр
канал то про гоу
Daniel
Оффтоп - это раст ругать тут
Alexander
Или хвалить без конкретики
Daniel
Не больше оффтоп, чем пропозал Романа
Alexander
Я бы тоже послушал, интересно же
саша
Коллега, вы тут регулярно раст пропагандируете. Но как-то без подробностей. Расскажите нам, пожалуйста, в чем состоит растовская система, и почему вы думаете, что она подойдет
В общем-то вся суть в том, не существует мутабельных/иммутабельных типов. Существуют только указатели с мутабельным/иммутабельным доступом и мутабельные/иммутабельные связывания. Связывание — это когда когда каким-то данным даётся какое-то имя (объявление переменной). Всё просто и путаться совершенно негде.
Daniel
А почему вы называете эту систему растовой? Разве в c++ не так же?
саша
А почему вы называете эту систему растовой? Разве в c++ не так же?
По идее так же. Но я не большой знаток плюсов, ибо интересовался ими только в универе и то до тех пор, пока не понял, что они совершенно не подходят для написания хоть чего-то.
саша
И да, я люблю гиперболы.
Daniel
Эти доклады будут или нет? http://www.highload.ru/moscow/2018/abstracts/3435
Наш с Кириллом будет, только что пришло письмо @kirilldanshin , пора готовиться
саша
Реально?
https://t.me/gogolang/152459
JASWGO
Всем привет. Кто делал In app purchase на iOS?
JASWGO
Как передать "рецепт" по API этой библиотеке? И из чего состоит "рецепт"?https://github.com/awa/go-iap
Илья
эрланг - про байтики повозить с минимумом бизнес логики же
Artem
эрланг - про байтики повозить с минимумом бизнес логики же
ну распределенно параллельно повозить да. С бизнес логикой боль(
Artem
в эликсире получше вроде
Илья
эликсир - это же другой язык, который на эрланговой vm катается, что с ним? хаскель вон тоже на jvm натягивают
Илья
у него свой путь, он даже работает, не пониланг какой-нибудь, но я на нем не игрался пока
Artem
с ним все хорошо. Развивается и становится популярным. Получше чем с ерлангом
🎉
Есть что-нибудь для записи логов в определённый файл, без лишних телодвижений на сервере?
Igor
Ребята, пособите советом Как сделать функцию, которая будет инсертить в postgres строку с различным количеством параметров? Функция примерно такая: func insert(data ...interface{}) error {...} таблица такая: c1,c2,c3 все могут быть NULL соответственно, нужно какое-то тело функции, которое бы вставляло в таблицу разное количество параметров от 1 до 3, которые подаются аргументами в функцию. Не понимаю как именно можно написать тело, т.к. в INSERT мы же явно указываем количество столбцов
Daniel
надо динамически формировать запрос
Daniel
и я рекоммендую для этого взять squirrel
Daniel
для начала - логи должен писать супервизор, а не приложение
Igor
и я рекоммендую для этого взять squirrel
чем лучше чем свитч с тремя вариантами? Быстрее?
Ilia
Есть что-нибудь для записи логов в определённый файл, без лишних телодвижений на сервере?
Ну можно же просто редиректить stdout и stderr в файл. Или нужно что-то более сложное?