
i..
21.10.2018
12:45:45
Господа, нужно, что бы при запуске программы, если загрузка цп высокая, она ожидала снижения и только тогда исполнялась
Чего то не получается примеров нагуглить, может кто ткнет?

Aliaksandr
21.10.2018
12:46:42

Roman
21.10.2018
12:47:43
это неэффективно.
bits.OnesCount в помощь

Google

Aliaksandr
21.10.2018
12:48:34
вот так проще проверять: n & (n-1) == 0
https://play.golang.org/p/vq1NhsoxgnT

Vladimir
21.10.2018
12:52:22

Aliaksandr
21.10.2018
12:53:35
хотя вот так быстрее - https://play.golang.org/p/z3bVJO8z6Z8 .

Vladimir
21.10.2018
12:56:07
нет проверял через bitsOneCount проигрывает даже моему варианту , а твой первый выигрывает у моего

Roman
21.10.2018
13:00:08

Vladimir
21.10.2018
13:00:17

Ilya
21.10.2018
13:01:28
Кто-нибудь знает какой-то общий подход, чтобы результат выполнения горутин записался в определенном порядке?
Например, я их запускаю по-очереди и хочу, чтобы какое-то результирующее значение тоже писалось в канал по-очереди

Roman
21.10.2018
13:02:35
https://play.golang.org/p/of5oLLYVIBx
goos: linux
goarch: arm64
BenchmarkIsStepen-4 30000000 41.7 ns/op
BenchmarkIsPowerOfTwoPopCnt-4 1000000000 2.62 ns/op
BenchmarkPowerOfTwo-4 1000000000 2.62 ns/op
PASS
goos: linux
goarch: amd64
BenchmarkIsStepen-4 200000000 7.92 ns/op
BenchmarkIsPowerOfTwoPopCnt-4 2000000000 0.68 ns/op
BenchmarkPowerOfTwo-4 2000000000 0.34 ns/op
PASS

Vladimir
21.10.2018
13:06:01
убираю свое как не оптимальное?

Google

Vladimir
21.10.2018
13:06:20
себе в копилку Александра

Рома
21.10.2018
13:06:42
Ребят, подскажите по github. Был проект оригинальный, я его форкнул, сделал изменения, отправил pull request. Дальше я сделал еще изменения в моем форке и хочу отправить второй pull request как это сделать? И всё ли я правильно делаю

Subbotin
21.10.2018
13:07:54

Ilya
21.10.2018
13:08:32

Subbotin
21.10.2018
13:08:46
Да

Ilya
21.10.2018
13:09:05
Тоже вариант, но я хотел как-то одним каналом обойтись, боюсь что много каналов слишком затратно по памяти
Но тоже вариант

Roman
21.10.2018
13:09:15

i..
21.10.2018
13:09:18
man nice
Хочу эту работу внутри моего исполняемого файла делать, вне зависимости от среды

Roman
21.10.2018
13:09:36
Или слайс

Ilya
21.10.2018
13:13:51
Куда записался?
Да куда угодно. Важно, чтобы в той же последовательности, что и вызов горутин
Хотя можно же на вызов горутины добавлять элемент в слайс и передавать его как замыкание

Vladimir
21.10.2018
13:14:43
пошел изучать math.bits
хотя из жизненного там только OnesCountХХ и LenXX , все равно еще раз пасибки

David
21.10.2018
13:36:17

Daniel
21.10.2018
14:19:08
Разбейте. Оно нагенерит go файлов по числу прото файлов

David
21.10.2018
14:19:57

Google

Daniel
21.10.2018
14:21:19
Плохой вопрос

David
21.10.2018
14:24:14
Насколько я знаю, golang не может подключать пакеты по относительному пути (если находится по пути GOPATH'а). Когда разбиваются прото файлы на несколько и подключаю их в в других - пишет ошибку только для golang'a

Daniel
21.10.2018
14:24:15
Невозможно ответить
Зачем вам связанные прото разносить по директориям

Denys
21.10.2018
14:26:14
Насколько я знаю, golang не может подключать пакеты по относительному пути
Может
import берет из GOPATH/src что угодно
будь то хоть "fuckyou/idiot"

David
21.10.2018
14:27:11
Зачем вам связанные прото разносить по директориям
Чисто для удобного добавления/удаления/редактирования в дальнейшем. Детальней можно прочитать что мне нужно здесь - https://stackoverflow.com/questions/52914402/compile-multiple-proto-files-into-single-file

Daniel
21.10.2018
14:29:01
Или они не связаны, или их нельзя редактировать отдельно

David
21.10.2018
14:32:31
Или они не связаны, или их нельзя редактировать отдельно
Немного не понял ответа. Есть сервис User (для работы с пользователями) - в котором есть entry (логин, регистрация) и info (информация о пользователе). Я хочу разбить эти две логики на более маленькие прото файлы, так как их будет намного (намного) больше

Daniel
21.10.2018
14:33:13
Зачем по разным директориям их разносить?

David
21.10.2018
14:33:24
Это все что нужно. Понимаю, что можно оставить все в одном файле user.proto, но очень не хотел бы это делать

Daniel
21.10.2018
14:33:54
Тогда оно все найдет и сгенерит
Доберусь до компа - пришлю пример

David
21.10.2018
14:34:37

Roman
21.10.2018
15:15:23
в большинстве компаний скорее ситуция похожа на "стая гоферов бежит за человеком у которого в руках Python/Ruby/JavaScript"
причём гоферы с копьями

hamper ?
21.10.2018
15:24:05
На сколько я понял, через WriteAt можно писать разные части файла одновременно, если они не пересекаются, а для этого дескриптор должен быть один? Например если я хочу параллельный аплоад файла кусками сделать, то надо сохранять дескриптор, что бы можно было в него писать? И как правильнее будет тогда записывать в файл, буферизировать в память кусками из входящего потока и через WriteAt писать или есть какой-то аналог io.Copy с возможностью указания с какого места писать?

Roman
21.10.2018
15:24:53

hamper ?
21.10.2018
15:25:49
а зачем тебе несколько дескрипторов?
Ну допустим у меня приходит http запрос с куском файла и range например 100-200 и в это же время в другом хендлере в этот же файл пишется 0-99 кусок.

Google

Roman
21.10.2018
15:26:13
дескриптор он поумолчанию один и даётся тебе операционкой если я не ошибаюсь. Это по сути идентификатор, как указатель, его можно копировать сколько хочешь но указывать он будет на одно и то-же (aliasing)

hamper ?
21.10.2018
15:27:00
Ну да, но если я в двух хендлерах вызову os.OpenFile на один и тот же файл и буду в него писать разве это будет работать?

Roman
21.10.2018
15:27:23
3. интерфейсы для работы с этими сущностями

hamper ?
21.10.2018
15:30:34
Ну примерно так и думал. А вот на счет записи через WriteAt есть какой-то способ не буферизовать в память? Вроде io.Copy напрямую как-то писать может...

Roman
21.10.2018
15:30:45

Vladimir
21.10.2018
15:32:18

Roman
21.10.2018
15:32:21
но даже если и не открывать несколько раз - file descriptor это по факту указатель, если из нескольких горутин с файлом работать тогда очевидно нужна синхронизация
ошибаешься, ОС так не делают
ты уверен? надо конечно проверить, но я предполагаю что открыть из нескольких процессов один и тот же файл на запись - не получится, хотя…. хер его знает

Vladimir
21.10.2018
15:33:35

Vladimir
21.10.2018
15:33:54

Roman
21.10.2018
15:34:14

Vladimir
21.10.2018
15:34:41

Roman
21.10.2018
15:35:09

Vladimir
21.10.2018
15:35:21

Vladimir
21.10.2018
15:35:46
команда WriteAT не говорит о каких либо различных дескрипторах файла не придумываейте и множестеннных Open

Roman
21.10.2018
15:36:01
но я чес. гря. не уверен имеет ли go runtime тут какую-то прослойку при работе с файлами

Vladimir
21.10.2018
15:37:16

hamper ?
21.10.2018
15:37:26
Думаю самым адекватным способом будет сделать один writer в файл с каналом, а из пришедших запросов читать куски и кидать в этот канал с указанием диапазона, по которому писать...

Google

Vladimir
21.10.2018
15:38:59
@Romshark если ты делаешь именно O_RDWR | O_EXCL - тогда да, на запись не откроешь еще, но это твоя задача так делать

Roman
21.10.2018
15:40:17

hamper ?
21.10.2018
15:40:31
Интересно, как сервисы, типа всяких вконтактиков аплоад делают, там как раз в несколько потоков файлы льются на сервер.

Vladimir
21.10.2018
15:42:25
грейсфул нужно

hamper ?
21.10.2018
15:43:28

Vladimir
21.10.2018
15:43:59

Марк ☢
21.10.2018
15:44:03

Vladimir
21.10.2018
15:44:15

hamper ?
21.10.2018
15:44:27
Для каждого из хендлеров.

Марк ☢
21.10.2018
15:44:46
а она есть
If O_EXCL is set and O_CREAT is not set, the result is undefined.

hamper ?
21.10.2018
15:44:47
Если придет новый запрос, то снова открывать файл.

Марк ☢
21.10.2018
15:45:19
Дабл ять
Замеморимаппьте файл и пишите куда хотите
На 64 битах похер на размер же