@proGO

Страница 526 из 1674
Олег
07.03.2017
16:15:59
го собсно по дизайну собирает статически

динамическим может остаться только glibc, если не ошибаюсь

чтобы оно не валилось при переносе на целевую систему

Mikhail
07.03.2017
21:29:01
Привет. Может кто подсказать? Собственно, хочу добавить метод changeSex для структры Human, чтобы менялось поле sex. Я так понимаю, мой код не работает из-за отсутсивия в go объекта this (и моих кривых рук) https://play.golang.org/p/o94VvDbFdb

Google
Denis
07.03.2017
21:29:33
Поинтер

Забыли

func (h *Human)

Иначе он заменяет копию

Точнее в функцию ченджсекс попадает копия хюмана

Mikhail
07.03.2017
21:33:56
this это кстати из какой сказки? где-то видел такое... паскаль?
в JS и C++ есть. Наверняка есть и в других языках

Поинтер
Благодарю

Roman
07.03.2017
22:16:33
В PHP

Pavel
07.03.2017
22:17:28
да this много где есть. В питоне, он называется self

как же еще можно сослаться на самого себя? )

corpix
07.03.2017
22:19:18
Ну это всё имена, в go просто это имя не захардкожено, выбор за разработчиком :)

Google
Phil
07.03.2017
22:19:55
да this много где есть. В питоне, он называется self
я понимаю что это. мне просто было не вспомнить где видел именно this

Serge
07.03.2017
22:25:29
развлекаюсь звоночками;) select { case <-s.bell: log.Print("Silenced the bell") default: log.Print("Bell is idle") } s.bell <- true log.Print("Rang the bell")

да this много где есть. В питоне, он называется self
ну, за исключением того, что его там как бы нет;)

Phil
07.03.2017
22:33:57
go не нужно glibc
phil@phil-home:~$ ldd hello_world linux-vdso.so.1 => (0x00007fffdc50c000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb123aa7000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb1236de000) /lib64/ld-linux-x86-64.so.2 (0x000055ba7e32f000)

Mikhail
07.03.2017
22:36:32


wf
07.03.2017
22:36:35
go не нужно glibc
в нем же нативные функции C

Phil
07.03.2017
22:38:08
это подсказки. забудь пока.

Mikhail
07.03.2017
22:39:36
это подсказки. забудь пока.
Я их юзал просто, когда писал rss-reader. И тогда меня вполне удовлетворил ответ в духе: "это надо, чтобы всё работало". Но теперь как-то интересно стало

Phil
07.03.2017
22:44:14
Я их юзал просто, когда писал rss-reader. И тогда меня вполне удовлетворил ответ в духе: "это надо, чтобы всё работало". Но теперь как-то интересно стало
https://golang.org/ref/spec#Struct_types A field declaration may be followed by an optional string literal tag, which becomes an attribute for all the fields in the corresponding field declaration. An empty tag string is equivalent to an absent tag. The tags are made visible through a reflection interface and take part in type identity for structs but are otherwise ignored.

Phil
07.03.2017
22:45:40
грубо говоря, синтаксическая добавка, которая самим языком игнорируется, но чтото там в рефлексии

Denis
07.03.2017
22:51:12
Доп инфа для декодинга из одного формата данных в другой, для orm всяких

Phil
07.03.2017
22:51:32
Какие в жопу orm

Denis
07.03.2017
22:53:21
Конкретно здесь эти данные помогают распарсить xml

Есть еще json, sql и тд

Каждая либа свои теги юзает

Ну чё, с праздником

Google
Yura
08.03.2017
07:46:03
Без этого флага, gethostbyname берется из libc через CGo, и потому тянет всю остальную машинерию для CGo.

Phil
08.03.2017
08:02:32
хм...

но у меня нет cgo

Yura
08.03.2017
08:10:20
Почему люди не читают то, что написано? Повторяю: без тага netgo, функция gethostbyname берется из libc с использованием cgo. С тагом netgo используется реализация на Go.

Subbotin
08.03.2017
08:11:43
Это точно не уствревшие на 3 версии данные?

Yura
08.03.2017
08:13:41
Нет. Это актуальные данные.

Проблема в том, что gethostbyname кроме dns может использовать плагины (а-ля pam).

Если в организации настроена "секьюрность" через такие плагины, то будет неожиданностью, что программа на Go вдруг ничего не знает про это.

По тому поведение по умолчанию - использовать gethistbyname из libc.

Если же человек понимает, что в его компании такое извращение не практикуется, то он может собрать с -tag netgo

Вероятно, в Гугле это извращение практикуется :-)

Mikalai
08.03.2017
08:22:08
это практикуется во всех дистрибутивах линукса (ну ладно, за все не говорю) как минимум

Yura
08.03.2017
08:23:00
Как вариант, можно пересобрать стандартную библиотеку с -tag netgo. Т.е. этот таг нужен только для стандартной либы. Тогда бинари будут собираться без линковки с libc (если другая либа cgo не притянет).

Yura
08.03.2017
08:26:29
это практикуется во всех дистрибутивах линукса (ну ладно, за все не говорю) как минимум
Но не все использут. Т.е. если в компании используется только файлики resolv.conf, hostname и dns сервера, то можно спокойно использовать чисто гошную реализацию.

Phil
08.03.2017
08:26:48
Но да, с -tags netgo собрал вообще без линков

Yura
08.03.2017
08:27:01
Phil
08.03.2017
08:27:19
Т.е. ты специально пересобрал Go без поддержки CGo?
бррр... разве это не просто два разных компилятора?

Yura
08.03.2017
08:29:10
В стандартой поставке поддержка cgo включена. И, повторю в третий раз, функция резолвинга хостов без явно указанного тэга netgo использует gethostbyname из libc. Угадай, как она это делает? Правильно, с использованием CGo.

Google
Yura
08.03.2017
08:29:49
Тебе не нужно явно звать cgo, т.к. стандартная либа уже скомпилена.

Phil
08.03.2017
08:29:53
я хз как. я не сильно вчитывался в код го. я даже не знаю как они всё остальное делают

Yura
08.03.2017
08:30:34
Тогда зачем так споришь?

Phil
08.03.2017
08:31:30
да я не спорю, я вытаскиваю сведения :)

А кстати как сделано? Я код крайем глаза посмотрел - что-то я не нашёл где они эльфа вручную собирают. Или таки это просто я не нашёл?

Сисколлы делать - это ведь надо трап какой-то генерить...

А как на Go трап сгенерить?

Yura
08.03.2017
08:33:41
В смысле? На ассемблере, точно так же, как gcc и прочие делают.

В runtime есть ассемблерные файлики

Admin
ERROR: S client not available

Yura
08.03.2017
08:34:18
В них реализация оберток для сисколов.

Phil
08.03.2017
08:37:22
хм... т.е. теоретически в go можно асм всталять недокументированно?

Phil
08.03.2017
08:40:23
alex3rd
08.03.2017
08:40:23
http://lemire.me/blog/2016/12/21/performance-overhead-when-calling-assembly-from-go/

Phil
08.03.2017
08:44:47
Вот кстати, смотрю я пакадж syscall и чтото вижу фигу. А как они из пакета это делают?

Quet
08.03.2017
08:46:33
магией

Phil
08.03.2017
08:48:09
Воооот

Yura
08.03.2017
08:48:24
Смотри внимательнее.

Не внимательно смотришь.

Google
Quet
08.03.2017
08:49:22
Фил, а ты какую проблему решаешь вот ща? что надо сделать чтобы не тянуть libc тебе сказали..

Phil
08.03.2017
08:49:47
Смотри внимательнее.
Скорее всего невнимательно смотрю. Но реально не понимаю. Именно сам пакет

Фил, а ты какую проблему решаешь вот ща? что надо сделать чтобы не тянуть libc тебе сказали..
Да у меня не было проблемы с libc. Я просто тут пока спорили не поленился ldd посмотреть. А потом любопытно стало

Исключительно научный интерес

Yura
08.03.2017
08:51:30
Скорее всего невнимательно смотрю. Но реально не понимаю. Именно сам пакет
Знаешь, я деталей не знаю. У меня обратная проблема: я слишком быстро начинаю понимать, и потому не углубляюсь в детали. В целом, это скорее мой недостаток.

Phil
08.03.2017
08:54:36
Ну пока у меня предположение, что есть недокументированный runtime API

Yura
08.03.2017
08:57:44
Конечно, все, что с маленькой буквы, не экспортировано и не документировано. Мало того, есть //go:linkname для скрытого "проброса" функций из пакаджа в пакадж (в основном, из runtime в другие либы стандартной библиотеки) , а также прямое обращение в ассемблере к функции из другого пакаджа по имени.

Maxim
08.03.2017
09:08:18
https://twitter.com/sAbakumoff/status/839139933424074753

https://twitter.com/sAbakumoff/status/839139933424074753
Большинство эмодзи в коммитах используются на основе неофициального стандарта по ним: https://gitmoji.carloscuesta.me

Dmitry
08.03.2017
09:09:36
скала - язык серьезный

Maxim
08.03.2017
09:09:59
https://twitter.com/sAbakumoff/status/839139933424074753
Т.е. у го большинство коммитов про прокачку зависимостей, исправления багов и украшательства кода

Timur
08.03.2017
09:17:45
PHPшники и Джависты клоуны. Там у них цирк есть.

Denis
08.03.2017
09:18:07
Что значит радуга у перла

У меня есть осторожные предположения

Timur
08.03.2017
09:18:23
Что значит радуга у перла
Там ещё и какашечка есть.

Dmitry
08.03.2017
09:21:00
а html единственные кто отказываются сознаться в багах

Denis
08.03.2017
09:30:24
Там браузер виноват

Roman
08.03.2017
10:23:00
Yura
08.03.2017
10:23:56
Ага. Библиотечного.

Roman
08.03.2017
10:26:59
Я видел вот этот патч. Люди поддерживают его для сборки go либы для андроида. Я почему-то насторожился

https://github.com/syncthing/syncthing-android/blob/master/patches/golang/all/dns.patch

Страница 526 из 1674