
Konstantin
08.08.2016
16:06:54
ну это другая крайность

yopp
08.08.2016
16:07:11
(из соседнего приложения, но эти времена уже прошли)

Konstantin
08.08.2016
16:07:19
а так да, fifo

yopp
08.08.2016
16:07:33
а зачем тебе в целом буффер?

Google

Konstantin
08.08.2016
16:09:47
чтобы сделать неблокирующее io
не бывает неблокирующего gets
ты читаешь сколько-то байт в буфер
смотришь там, закончилась строка или нет

ojab
08.08.2016
16:10:26
чем велосипед лучше чем nio4r?

Konstantin
08.08.2016
16:11:56
плюс чтобы понимать что тебе нужен nio4r
надо познать всю боль
и убедиться, что без них не обойтись
пока ещё профит неочевиден
точнее я не сравнивал
возможно текущая имплементация будет "fast enough"

ojab
08.08.2016
16:13:52
без cext сложновато дёргать select/epoll/whatever

Google

ojab
08.08.2016
16:14:33
(ну а без их дёрганья сложно делать вменяемое неблокирующееся io)

Konstantin
08.08.2016
16:15:59
ojab ну так-то получлиось довольно компактно https://github.com/etehtsea/oxblood/blob/master/lib/oxblood/rsocket.rb

yopp
08.08.2016
16:16:29

Konstantin
08.08.2016
16:17:04
и даже без эксепшенов!

ojab
08.08.2016
16:17:43
гм

Konstantin
08.08.2016
16:17:44
@dd_bb когда над stdlib каждый пишет свой враппер, то что-то не так
а пишет реально каждый

ojab
08.08.2016
16:17:54

Konstantin
08.08.2016
16:18:34
ну select так-то вроде сосёт сам по себе
в сравнении с epoll/kqueue/whatever

ojab
08.08.2016
16:19:37
да, но он есть везде
в отличие от epoll и иже

Konstantin
08.08.2016
16:20:07
ну да
но можно было бы сделать фоллбек
https://docs.python.org/3/library/select.html
обмазывайся как хочешь

ojab
08.08.2016
16:21:49
| grep 'Only supported'

Konstantin
08.08.2016
16:22:44
ну так см выше
но можно было бы сделать фоллбек

ojab
08.08.2016
16:23:36
у них api слишком разные, для fallback'а нужно свой API выставлять

Google

ojab
08.08.2016
16:23:43
ну и в итоге получится nio4r

Konstantin
08.08.2016
16:24:12
за той разницой, что не надо будет в репо складывать libev
и писать over9k строк на c/java
https://github.com/celluloid/nio4r/tree/master/ext/libev

yopp
08.08.2016
16:26:09
они же пишут: A pure Ruby implementation based on Kernel.select is also provided :D
я думаю что если ты предложишь вариант без libev, который будет с нормальным рубишным интерфейсом, то с большой долей вероятности его примут

ojab
08.08.2016
16:28:41
возможно вы имели в виду: n вариантов для epoll/kqueue/whatever
libev, кстати, меня действительно смущает. Лучше бы взяли старый добрый libevent или новый модный libuv
с ними хотя бы более понятны были бы причины выбора

yopp
08.08.2016
16:29:51
а пейтоновцы чо снизу используют?

ojab
08.08.2016
16:30:13
судя по ссылке выше — ничего
хотя хз что они там в asynio сделали

yopp
08.08.2016
16:31:38
ну тогда просто тупо тоже высунуть всё остальное и какие-то предикаты типа epollable? и танцуй

ojab
08.08.2016
16:32:07
zomg

Konstantin
08.08.2016
16:32:09
а какой треш начинается если еще и ssl нужен...

ojab
08.08.2016
16:32:12
https://docs.python.org/3/library/asyncio-protocol.html
looks like оно сделано через callback'и

yopp
08.08.2016
16:32:24
callback based API
ой всё
нода на питоне!

Google

yopp
08.08.2016
16:33:01
а ваще, есть же треды и очередьи для тредов
есть тред который с IO работает, есть который IO пережевывает
какая разница тому кто пережевывает, чем там байты пришли
в смысле не вижу связи между тем как с IO работать и TLS

Konstantin
08.08.2016
16:37:39
не могу найти сейчас
завтра посмотрю

Admin
ERROR: S client not available

ojab
08.08.2016
16:38:05
ага, собственно в питоне есть API'шка над select/epoll/etc https://docs.python.org/3/library/selectors.html#module-selectors
через которую всё и работает

Nikolay
08.08.2016
19:56:13
посоны, у меня рубя не делает downcase кирилице. шо делать?

ojab
08.08.2016
19:56:45
выставить кодировку?

Nikolay
08.08.2016
19:59:50
"\u00BD"
=> "½"
или ты про считываемый файл?

ojab
08.08.2016
20:00:04
doesn't look like кириллица
.encoding на строке с кириллицей что говорит?

Nikolay
08.08.2016
20:00:59
[2] pry(main)> ' трахни нормальность'
=> " трахни нормальность"

Vitaliy
08.08.2016
20:01:09
mb_chars

Nikolay
08.08.2016
20:01:15
' трахни нормальность'.encoding
=> #<Encoding:UTF-8>
мб_чарс - активсапорт

Google

s
08.08.2016
20:01:23
если не 2.4, то нужно либо использовать гем unicode, либо mb_chars

ojab
08.08.2016
20:01:55
oh wow
действительно

Nikolay
08.08.2016
20:06:16
и все для того чтобы открыть файл, прочитать, сгенерить пару десяток строк и забыть ))
и нихрена гем уникод не помог
array.first
=> ["А", "A", "-", "Алушта", "Alushta\n"]
array.first.each {|a| puts a.downcase}
А
a
-
Алушта
alushta
первая а - кирилическая

ojab
08.08.2016
20:09:01
а ты его зареквайрил?

s
08.08.2016
20:09:10
Unicode.downcase(‘лала’)
чтобы работало, как у тебя нужно манкипатчить String

ojab
08.08.2016
20:09:34
ужасы какие, как я рад что не работаю с кириллицей

s
08.08.2016
20:10:16
cyrillic happens )

anon
08.08.2016
20:10:24

s
08.08.2016
20:10:35
ждем вот
релизную версию

Nikolay
08.08.2016
20:11:10
конечно зареквайрид
а у меня тонны кириллицы

ojab
08.08.2016
20:12:05
ну вы там не расслабляйтесь, ещё как минимум https://bugs.ruby-lang.org/issues/7845 есть

Nikolay
08.08.2016
20:12:09
array.first.each {|a| puts a.encoding}
UTF-8
UTF-8
UTF-8
UTF-8
UTF-8

ojab
08.08.2016
20:12:28
на который я даже без всякой там кириллицы напарывался