
Evgeny
03.02.2017
08:28:01
Я юзал гем parallel, тоже вроде не сложно, если не thread safe задачи

Ilya
03.02.2017
08:28:22

Evgeny
03.02.2017
08:29:01
я лучше crystal выберу ?
А как он решит задачи распараллеливания? Или я что-то не то думаю) А так кристал быстро решит задачи наверное, смотря какие)

Konstantin
03.02.2017
08:29:21

Google

Ilya
03.02.2017
08:30:11

Alexander
03.02.2017
08:30:31

Dima
03.02.2017
08:31:00

Evgeny
03.02.2017
08:31:28
Как то json генератор делал на кристале, впечатлило время выполнения)
И разбор быстрее
файл тестил по 100мб

Konstantin
03.02.2017
08:33:47

Evgeny
03.02.2017
08:34:17
honeybadger-exceptions.pdf, седня в рассылки руби викли была книга, вроде ничего такая. Примеры кастомных эксепшенов прикольные, вложенные: # RuntimeError caused by EatingError while eating soup
# eating.rb:9:in `fail_and_reraise'
ПРикольно)

Konstantin
03.02.2017
08:34:27

Dima
03.02.2017
08:34:30

Tim
03.02.2017
08:36:33
честь не позволила смолчать на обидную фразу

Dima
03.02.2017
08:36:38

Konstantin
03.02.2017
08:37:16

Google

Evgeny
03.02.2017
08:37:28
Наверное немного java надо знать, к ней могут быть затыки мелкие + Jvm особенности

Tim
03.02.2017
08:37:52
зачем java надо знать то?
это язык, а jvm это платформа так сказать

Ilya
03.02.2017
08:38:27
Ммм... Ну в принципе того и того. Но я с jruby не работал, не могу в деталях подсказать
я не сталкивался с настолько тяжелыми запросами, не могу сказать. Но вообще, если респонс тайм большой, то скорее всего где-то есть очень узкое место (ошибка в проекторовании, ошибка в разработке). Правильный способ - это устранить это место, а распараллеливать обработку такое себе.
Плюс, к примеру если на сервере 8 ядер и веб-сервер работает в 8 потоков, это может привести к еще большему увеличению времени отклика сервера.

Dima
03.02.2017
08:39:00
разве jruby не формирует байт код,

Ilya
03.02.2017
08:39:24
Еще раз повторюсь, никогда не видел, чтобы реквест обрабатывали в несколько потоков

Konstantin
03.02.2017
08:39:28
я не сталкивался с настолько тяжелыми запросами, не могу сказать. Но вообще, если респонс тайм большой, то скорее всего где-то есть очень узкое место (ошибка в проекторовании, ошибка в разработке). Правильный способ - это устранить это место, а распараллеливать обработку такое себе.
Плюс, к примеру если на сервере 8 ядер и веб-сервер работает в 8 потоков, это может привести к еще большему увеличению времени отклика сервера.
Так то вообще там все просто получается. Вместо того, чтобы как у юникорнов параллелить по процессам все, параллелишь на какой-нибудь пуме по потокам. Переключение потоков быстрее, чем переключение процессов + jvm дает профит по мультипроцессорности. Отсюда и прирост в производительности.
Ну и сам запрос если тяжелый, например работа с массивами, то это тоже легко параллелится и выполняется быстрее

Evgeny
03.02.2017
08:39:30

Dima
03.02.2017
08:39:34
котой потом просто выполянется на интерпретаторе оного.

Konstantin
03.02.2017
08:39:50
Т.е. прироста в скорости обычных операций не будет. Но код можно параллелить.

Tim
03.02.2017
08:39:54
ну а MRI на сях завязан, и что

Dima
03.02.2017
08:39:57
я уже который раз слышку о jruby как чуть ли не о отдельном языке программирвоания.
что удивляет.

Evgeny
03.02.2017
08:41:26
Есть еще трюфель
ПРо него много в последнеее время гвоорят

Dima
03.02.2017
08:41:42

Ilya
03.02.2017
08:41:54

Evgeny
03.02.2017
08:42:04
https://github.com/graalvm/truffleruby

Google

Dima
03.02.2017
08:42:06

Alexander
03.02.2017
08:43:34

Ilya
03.02.2017
08:43:42
ну его еще меньше гемов саппортит)
я про трюфель)

Alexander
03.02.2017
08:43:55
не продакшен-рэди(

Evgeny
03.02.2017
08:43:55
Если Oracle и IBM пытаются руби поднять на новый уровень, значит язык наверняка им нравится и не хотят с ним прощатся

Dima
03.02.2017
08:44:04

Alexander
03.02.2017
08:44:26
и многие теперь боятся, что они могут в любой момент openjvm закрыть (забросить), например

Dima
03.02.2017
08:45:00
ясно

Evgeny
03.02.2017
08:47:09
Единственное, что не очень хорошо, все свои имплементации делают, а что то одно дополить никак. В итоге зоопарк большой, а толку не много, кто то у себя чисто вкорпоративных нуждах юзают и все. Руби 3х3 в 2020г это оооочень долго. Уже говорили например совместить бы MRI и например Rubinuis, было бы уже хорошо, но каждый свое пытается пропихнуть
@lbvf50, ты где тов конторе работаешь или сам для себя что-то пилишь?

Dima
03.02.2017
08:51:58

Evgeny
03.02.2017
08:52:16
Ясно)

Dima
03.02.2017
08:53:12

Evgeny
03.02.2017
08:53:41
) А ты с какого города?

Dima
03.02.2017
08:53:47
Лед тронулся, госопода присяжные заседатели. Командовать парадом буду я.

Tim
03.02.2017
08:54:43
)

Google

Ilya
03.02.2017
08:55:25
ты там точно сам не тронулся? :DDDDD

Alexander
03.02.2017
09:11:04
$ gem i nokogiri
Building native extensions. This could take a while...
ERROR: While executing gem ... (TypeError)
no implicit conversion of nil into String
крайне информативно, люблю такое
люблю, блядь, rbenv

Alan
03.02.2017
09:13:07
Jruby хорош в мультипроцессорности, mri не умеет этого. Но господа mri с его gil даёт thread safe, jruby нет, так что если вы уверены в своих силах в плане потоков и распараллеливания процессов ручками, то без проблем- берите и пилите:)
В остальном я особо пока не касался jruby

Alexander
03.02.2017
09:14:35
$ gem uninstall nokogiri
Select gem to uninstall:
1. nokogiri-1.7.0
2. nokogiri-1.7.0
3. All versions
тоже шикардос

Alan
03.02.2017
09:16:12

Dima
03.02.2017
09:16:14

Alan
03.02.2017
09:16:54

Admin
ERROR: S client not available

Evgeny
03.02.2017
09:16:59
Это когда например запись в массив блокирует один поток, чтобы его второй не перезаписал

Aldar
03.02.2017
09:17:13

Alan
03.02.2017
09:17:28
Если потоков 1000, а изначально переменная равна нулю
То после завершения программы получишь в mri переменную равную 1000
А в jruby не гарантирована 1000 нк выходе, будет 800-900

Dima
03.02.2017
09:18:52
спасибо

Alan
03.02.2017
09:19:07
Потому что не знают потоки о том что другие сейчас туда пишут
В mri gil следит за этим и блокирует запись другим потокам пока пишет один

Dima
03.02.2017
09:19:52
наверно в thread safe есть какие-то очереди к доступу на объект, чтоб ве операции произвести

Google

Алексей
03.02.2017
09:20:34
Тоесть если умеешь руками делать то мри надежнее?

Evgeny
03.02.2017
09:20:43
Мьютексы вроде там

Alan
03.02.2017
09:20:48
В нутрях на самом деле запись идёт всегда в одном потоке

Aldar
03.02.2017
09:23:27
https://en.wikipedia.org/wiki/Compare-and-swap
в итоге все в эту инструкцию упирается
https://mortoray.com/2011/12/16/how-does-a-mutex-work-what-does-it-cost/
mutex использует cas, если вход в критическую область закрыт то усыпляет поток

Alexander
03.02.2017
09:28:40
я сдался, нахуй rbenv
не осилил на арче

Alan
03.02.2017
10:39:34

Alexander
03.02.2017
10:46:09
ну вот так. у тебя норм переключаются версии, подхватываются гемы, исполняемые файлы? я так и не смог добиться стабильности в этом
ручной работы много получается
а может косяк был из-за system версии ?
но уже стрёмно rvm удалять, всё засрал наверняка
но я попробую отважно
с ним шелл долго грузится(

Dima
03.02.2017
12:29:41
хз че ты там не осилил.
всё нормально переключалось.
на крайняк rbenv rehash

Alexander
03.02.2017
12:43:12
хз че ты там не осилил.
какой дистр? я вот уже догадываюсь, что проблема из-за system-версии, может ещё каких конфигов
типа $GEM_HOME, ~/.gemrc и прочее