
Savely
18.10.2018
14:29:45
против адекватных ничего против не имею

Kirill
18.10.2018
14:30:15

Roman
18.10.2018
14:31:04

Google

Roman
18.10.2018
14:31:58

Roman
18.10.2018
14:34:06

Roman
18.10.2018
14:34:33

Savely
18.10.2018
14:36:41

Roman
18.10.2018
14:38:45
»The reason is obvious - static compiler can't inline across file boundaries.
https://morepypy.blogspot.com/2011/08/pypy-is-faster-than-c-again-string.html
>Overall PyPy is almost 2x faster. This is clearly win for dynamic compilation over static - the sprintf function lives in libc and so cannot be specializing over the constant string, which has to be parsed every time it's executed. In the case of PyPy, we specialize the assembler if we detect the left hand string of the modulo operator to be constant.

Dmitry
18.10.2018
14:40:38
Всем привет! Можно нубский вопрос закинуть? :)

Denys
18.10.2018
14:41:11
нельзя

Aleksandr
18.10.2018
14:41:15
можно не здороваться и не спрашивать. Просто начинай с места в карьер

Denys
18.10.2018
14:41:34
как это не здороваться?

Dmitry
18.10.2018
14:41:38

Google

Denys
18.10.2018
14:41:41
отвечать человеку который даже не здоровается?
фе
я предлагаю сначало обсудть погоду, потом перейти к сути дела

Roman
18.10.2018
14:43:04

Denys
18.10.2018
14:43:20

anatolii
18.10.2018
14:43:52
интерпретатор питона на питоне

Dmitry
18.10.2018
14:43:56
Короче. Создаю процесс через exec.Command и хочу весь его ввод/вывод перенаправить в TCP сокет. Но при этом пропускать его через свои функции. Я открываю в одно потоке процесс, вешаю его Stdin/out через пайпы на глобальнеы переменные, а потом запускаю другой поток, который читает из out и пишет в сокет

Savely
18.10.2018
14:43:57
Это тупо косяк C.

Bohdan
18.10.2018
14:44:16

Denys
18.10.2018
14:44:27
какие проблемы он решает
он ведь по идее медленней должен быть
go компилятор на go вроде тоже существует

Roman
18.10.2018
14:44:45

Denys
18.10.2018
14:44:45
но он медленно компилиурет

Dmitry
18.10.2018
14:44:50
Читаю примерно так
for {
message, err := bufio.NewReader(shellOut).ReadString('\n')
fmt.Print(message)
}
Для теста запускаю на виртуалке с виндой, в качестве комманды обычный cmd.exe
И при этом получаю в консоли
Microsoft Windows [Version 6.1.7601]

Илья
18.10.2018
14:46:04

Roman
18.10.2018
14:46:10
Это тупо косяк C.
И? Там есть пример с printf, где на каждый вызов парсится format string

Denys
18.10.2018
14:46:26

Google

Dmitry
18.10.2018
14:46:38
И все. А долже получить полностью
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
C:\Users\root>
Что не так-то?

Илья
18.10.2018
14:47:04
пруф
https://golang.org/doc/go1.5 The compiler and runtime are now written entirely in Go (with a little assembler). C is no longer involved in the implementation, and so the C compiler that was once necessary for building the distribution is gone.

Roman
18.10.2018
14:47:06

Denys
18.10.2018
14:47:33
мне так стыдно
я будто вовсе не го программист
видимо нет

Roman
18.10.2018
14:47:55

Denys
18.10.2018
14:48:10
я не умею читать внимательно
я серьезно
у меня синдром дифицита внимания

Илья
18.10.2018
14:48:43
непонятно

Dmitry
18.10.2018
14:48:58

Vadim
18.10.2018
14:51:37
go имеет inline функций

Илья
18.10.2018
14:52:43

Vadim
18.10.2018
14:52:56

Илья
18.10.2018
14:52:57
как оно связано с с? или с js?

Vadim
18.10.2018
14:53:30
Оно связанно с постом выше, в котором c проигрывало питону

Dmitry
18.10.2018
14:53:36

Google

Roman
18.10.2018
14:57:35

Denys
18.10.2018
14:58:34

Vadim
18.10.2018
14:58:41
https://github.com/golang/go/wiki/CompilerOptimizations
Кстати, использовать каналы struct{} - good practice?

Savely
18.10.2018
15:02:25
но я лично предпочитаю шоб чуток читабельней было
и делаю bool
шоб done <- true

Roman
18.10.2018
15:03:08

Илья
18.10.2018
15:06:00
https://play.golang.org/p/tB7U04txSEx
очень плохой код с глобальными переменными, посмотрите сюда https://stackoverflow.com/questions/38866952/streaming-commands-output-progress-from-goroutine, попробуйте залогировать ошибки в тчении
но, помоему, логика сломана на строке 70-72

Dmitry
18.10.2018
15:06:54

Илья
18.10.2018
15:07:20

Dmitry
18.10.2018
15:08:21
Где-то лок хватаю, не пойму где

Илья
18.10.2018
15:09:00
ну, если не хотите переписывать :) то delve вам в руки

Dmitry
18.10.2018
15:09:26
Переписывать?
Я бы с удовольствием, просто пока непонятно на что переписывать :)

Илья
18.10.2018
15:13:32
на нормальный код?

Dmitry
18.10.2018
15:15:36
на нормальный код?
Я действительно совсем недавно в го, 2-й день. Просто видимо не понимаю, что именно не так со строками 71 - 72? Обычное условие и вызов функции

Google

Илья
18.10.2018
15:16:52
проблемы в структуре кода и приложения, проблема не в 71-72, проблема в том, что у вас есть клиент и сервер (похоже на что-то такое) и потребитель/писатель в пайп команды, все в каше, поэтому понять, что именно идет не так без отладчика врядли получится

Dmitry
18.10.2018
15:18:50

Илья
18.10.2018
15:19:23
ну, можно попробовать дочитать, а потом уже начать писать, но это не точно

Dmitry
18.10.2018
15:25:12

Илья
18.10.2018
15:26:23
возможно, стоит начать с чего-то попроще? просто писать в stdin и читать из команды? так может и тесты появятся, потом читателя от писателя удастся вычленить, проверить с каждый стороны, а там уже и до клиента и сервера дойдет

Dmitry
18.10.2018
15:28:36
Отдельно читать и писать в cmd я погу, в сокет тоже. Вокруг текущей логики есть обвязка, оно все работает. Не работает конкретно свзять cmd с сокетом. Да и даже дело в сокете. Блок происходит на 47-49 строке. Причем комментирование 49-й не помогает
То есть, основная проблема в том, что блокируется процесс, который читает cmd. но почему он блочит - я не понимаю

Dmitri
18.10.2018
15:49:37

Dmitry
18.10.2018
15:59:29

Dmitri
18.10.2018
16:02:14
shell.Run - выполняет команду и закрывается
На момент получения второй строки у тебя процесс уже мертв

Khusrav
18.10.2018
16:02:56
Привет всем у кого есть книга Go на практике

Dmitri
18.10.2018
16:02:58
А у тебя бесконечный цикл

Dmitry
18.10.2018
16:03:25
в интерактивном режиме

Dmitri
18.10.2018
16:03:47