@proRuby

Страница 1261 из 1594
ShadoWalkeR
20.06.2018
12:53:13
Мне иначе придется для пачки пользователей тащить рвм

Alex
20.06.2018
12:57:16
chef

ShadoWalkeR
20.06.2018
12:57:52
Паппет и ансибл

Alex
20.06.2018
12:58:18
нахер паппет.

Google
ShadoWalkeR
20.06.2018
12:59:44
Но есть 2 но - Во первых административный запрет на хомяков. А во вторых я только для системы вещи пишу - у нас на серверах не бывает ни клиентов ни сайтов - только телефония

нахер паппет.
Историческое наследие

Alex
20.06.2018
13:00:54
административный запрет на хомяков? ха?

самая безопасная схема под запретом, хех

ShadoWalkeR
20.06.2018
13:02:10
Ага. У нас по распорядку при увольнении сотрудника его хомяк грохается. Я пытался предложить для системных пользователей, но руководство сказало что "у нас есть стандартные подходы, работаем с ними"

Ну оно не так безопасно как кажется

Используешь selinux/apparmor или что там в deb?

Alex
20.06.2018
13:03:20
не юзал еще

все руки не дойдут разобоаться

privilege escalation

ShadoWalkeR
20.06.2018
13:04:20
Вообще для вэба есть стандартный пользователь, для которого политики безопасности давно написаны)

Alex
20.06.2018
13:04:33
технически один раз дав доступ в шелл - нельзя считать что система не была зарутована

Google
ShadoWalkeR
20.06.2018
13:05:09
Я же говорю - административно)))

для веба, а не хомяка юзера
Для системного юзера, из под которого апач/нжинск работают есть и стандартные пути - куда класть логи, пид и прочее)

ShadoWalkeR
20.06.2018
13:07:26
Секурность))))

Как минимум логи и конфиги я бы перекинул)

/var/log и /etc)))))

Alex
20.06.2018
13:08:25
Как минимум логи и конфиги я бы перекинул)
чтобы их хомяковый юзер не мог читать?

ShadoWalkeR
20.06.2018
13:09:54
Точно также задаешь права.

Просто при селинуксе залив шелл взломщик не сможет попасть куда то дальше папки с сайтом. И через этот же селинукс можно только известным бинарям разрешить доступ к чему либо в системе.

Причем не просто rwx - а скажем бинарю можно открыть фал и писать в него, а скачать нельзя

Или запретить либы грузить неизвестно откуда попавшие в систему

Alex
20.06.2018
13:13:11
скачать нельзя ахаха

ShadoWalkeR
20.06.2018
13:13:33
Ну я образно)

В селинуксе просто несколько иначе работает политика.

Там всем файлам и процессам задаются метки. И дальше этим меткам разрешаются какие либо действия, причем на уровне "открыть сокет" "слушать порт" "загрузить so" и тд

Поеду я домой)

Crypt
20.06.2018
14:04:14
т.е юзаешь systemd --user?
Если не в контейнере приложуха - идеальный вариант.

Можно нагенерить конфиги с помощью foreman

Alex
20.06.2018
14:05:44
Можно нагенерить конфиги с помощью foreman
есть готовое решение если не секрет?

Google
Crypt
20.06.2018
14:12:55
есть готовое решение если не секрет?
https://github.com/puma/puma/blob/master/docs/systemd.md

# Variant: Use config file with `bind` directives instead: # ExecStart=<WD>/sbin/puma -C config.rb я бы заюзал этот вариант, только WD надо заменить на /path/to/bundle exec puma ...

А чтобы от юзера запускать, нужно в секции Service добавить User=...

Владимир
20.06.2018
15:48:48
Йо! Тут рубисты нужны! У ребят форматирование поползло)))

https://moikrug.ru/vacancies/1000043318

Nikita
20.06.2018
16:39:27
Она легкая

https://gist.github.com/n-n1ks/db2fa8db5da163cf3d0e03acbc5d22bf

Владимир
20.06.2018
16:40:27
Она легкая
кто спорит но забавная)

Nikita
20.06.2018
16:40:51
Да, задумка интересная)

Aldar
21.06.2018
00:10:52
т.е. в digatal signature все с ног на голову
Да, там шифруют приватным ключом а расшифровывают публичным

Amir
21.06.2018
03:20:54
Ребята помогите построить алгоритм Есть некий сервис, скажем формирует файл по запросу В одном потоке вся эта затея работает очень долго Есть идея запустить паралельные запросы к сервисы, скажем 10 шт одновременно А самих запросов порядка 20 тыс, будет еще больше Как правильно построить алгоритм с применением Thread

ShadoWalkeR
21.06.2018
06:02:27
Хотите забавную вещь?

Мне тут надо проверить принадлежность числа к диапазону 100..299. В Range есть 3 метода для этого - cover, include и member и я задался вопросом - а что работает быстрей? Набросал на коленке просто тест - через Time.now.nsec вывожу время до и после вызова метода, разницу сохраняю в хэш с номером итерации и методом ну и прохожу несколько раз по проверкам циклом: Tests for cover are:{0=>54199, 1=>92269, 2=>87984, 3=>79074, 4=>82557, 5=>105183, 6=>67024, 7=>86556, 8=>123680, 9=>56752} Tests for include are:{0=>26467, 1=>34418, 2=>20412, 3=>25192, 4=>29843, 5=>46074, 6=>14505, 7=>19188, 8=>36798, 9=>13580} Tests for member are:{0=>14893, 1=>29171, 2=>37696, 3=>19570, 4=>34779, 5=>41920, 6=>30854, 7=>63244, 8=>21239, 9=>24669}

Но тут я задумался - а что если оно будет текстовым? Tests for cover are:{0=>36144, 1=>117000, 2=>98328, 3=>93161, 4=>92900, 5=>142062, 6=>86847, 7=>107774, 8=>87453, 9=>105976} Tests for include are:{0=>61100, 1=>203035, 2=>259009, 3=>185976, 4=>137566, 5=>395837, 6=>176961, 7=>196034, 8=>260701, 9=>389267} Tests for member are:{0=>56937, 1=>194380, 2=>187381, 3=>121516, 4=>123535, 5=>193052, 6=>122974, 7=>185280, 8=>123530, 9=>330273}

И внезапно cover с member поменялись местами)

Dmitry
21.06.2018
06:12:34
Я бы для бенчмарков юзал Benchmark, так думаю правдоподобней получится

ShadoWalkeR
21.06.2018
06:21:41
Тоже самое по разнице: "100".."299" $ ./test.rb user system total real cover: 0.000013 0.000003 0.000016 ( 0.000011) include: 0.000305 0.000000 0.000305 ( 0.000305) member: 0.000364 0.000000 0.000364 ( 0.000364) 100..299 $ ./test.rb user system total real cover: 0.000012 0.000002 0.000014 ( 0.000009) include: 0.000008 0.000002 0.000010 ( 0.000006) member: 0.000005 0.000001 0.000006 ( 0.000005)

На текстовых метках выигрывает cover, на числах member

А если еще и не угадать с типом, то можно вляпаться c member/include - разница существенна же ?

Google
Nikita
21.06.2018
07:25:28
https://rubyrussia.club/ru

там билеты завезли

Amir
21.06.2018
07:35:51
Смотри в сторону Sidekiq или concurrent-ruby, если нужны какие-то постманипуляции с этими файлами
Ребята а что если так сделаю Создам модель очередей Запущу 10 тредов, потоков Каждый будет читать из модели очередей запись и пометит что обрабатывает(Запишет в поле модели отметку), и при окончании обработки должен записать результат , скажем обработка прошла удачно или нет, ставит галочку Да,Нет, ну или/и пишет комментарий, текст ошибки в текстовое поле модели очередей Какие могут быть у меня проблемы при такой архитектуре? :) Одновременное потоками чтение и запись в модели

Aleksey
21.06.2018
07:39:33
оно не будет работать одновременно из-за GIL, бестолковая затея

Amir
21.06.2018
07:41:06
А что если MyQueue.lock.where(processed: false).first ?

Aleksey
21.06.2018
07:41:39
как уже выше сказали - sidekiq, плагин к нему какой-то чтоб сохранять статус джобы после ее завершения (по дефолту сайдкик тут же удаляет ее из редиса как только выполнилась), и в клиенте которому надо узнать - готово или нет - проверять по айдишнику джобы

Amir
21.06.2018
07:44:12
Но мне надо фиксировать результат обработки В админке должно быть видно И чтобы была возможность при желании надо повторить неудачных

Aleksey
21.06.2018
07:44:53
> и в клиенте которому надо узнать - готово или нет - проверять по айдишнику джобы

Nikolay
21.06.2018
07:46:19
Или на каждую запись из твоей “модели очередей” запускаешь воркер сайдкика. Воркер сайдкика отработает и запишет результат в эту запись. Записи из этой модели со всеми свойствами отображаешь в админке.

Nikolay
21.06.2018
07:50:51
это всё равно будет проще, чем руками делать какой-то канкаренси на голом руби, который будет тебя стрелять в ногу каждый раз)

Roman
21.06.2018
07:54:50
А если еще и не угадать с типом, то можно вляпаться c member/include - разница существенна же ?
member и include - это алиасы, они не могут отличаться cover проверяет крайние точки и он быстрей, но не всегда то что нужно

у тебя что-то не то с тестами

ShadoWalkeR
21.06.2018
08:01:39
Не алиасы

member для чисел несколько иначе работает

В доке так и написано

Roman
21.06.2018
08:10:00
В доке так и написано
открой доку и Нажми на методе click to toggle source

ShadoWalkeR
21.06.2018
08:11:39
Хм действительно

Roman
21.06.2018
08:12:46
проверь нормально через bmbm на рейндже больше 1к элементов хотябы

Google
ShadoWalkeR
21.06.2018
08:14:01
А у меня не будет рейнджа больше

В любом случае я сравнивал cover и member.

Roman
21.06.2018
08:15:43
я к тому что прежде чем говорить что что-то быстрее чего-то другого, надо проводить нормальные бенчмарки

ShadoWalkeR
21.06.2018
08:15:49
Победителем вышел if _SIP_CODE >= 100 and _SIP_CODE =< 299 ?

Roman
21.06.2018
08:16:19
ShadoWalkeR
21.06.2018
08:17:57
Помоему тут поиск 100000 у меня выполняется: user system total real cover: 0.015520 0.000099 0.015619 ( 0.015804) include: 0.018694 0.000000 0.018694 ( 0.019233) member: 0.016845 0.000000 0.016845 ( 0.017236) just <> test: 0.009810 0.000000 0.009810 ( 0.009946)

Даже с cover разница почти в 2 раза

require 'benchmark' RANGE = 100..299 n = 10 Benchmark.bm(7) do |x| x.report("cover:") { n.times do RANGE.cover?(100) end } x.report("include:") { n.times do RANGE.include?(183) end } x.report("member:") { n.times do RANGE.member?(200) end } x.report("just <> test:") { n.times do if 183 >= 100 and 183 <= 299 then {} end end } end

Я потом в n просто нули докидывал

Николай
21.06.2018
10:52:08
Всем привет. У меня небольшой вопрос по оптимизации всякой статистики. Начать с того же обычного счётчика просмотров. Я правильно понимаю, что самый оптимальный способ его сделать это читать и записывать просмотры из редиса, а потом уже кроном время от времени сохранять данные из редиса в бд? Или есть более элегантные способы?

Николай
21.06.2018
11:02:30
https://github.com/magnusvk/counter_culture Вот этот вроде ничо
Спс. Но вообще не по рельсам конкретно, а меня в целом логика работы таких вещей интересует ☺️ А вот если к примеру говорить о более сложной статистике, для которой потребуется создавать отдельную запись под каждое действие, то куда обычно сливают весь этот поток insert'ов? Тот же MySQL наверное захлебнется от такого. Это уже привет церковь метрик и всякие Clickhouse или можно более просто такое сделать?

Alex
21.06.2018
11:03:30
логика работы - создал запись - послал легковесный апдейт счётчика

если даже это слишком много то там надо уже думать, варианты разные.

Николай
21.06.2018
11:05:39
Ну со счётчиком редиса это да, там вроде все понятно. А если нужно к каждому просмотру допустим привязать Ip пользователя, время и что-то ещё, то есть ли возможность сделать это быстро или без поднятия спецдб для мониторинга никак?

Николай
21.06.2018
11:07:07
Ну нагрузки не очень большие, порядка миллиона просмотров в день, но просто конкретно такая подробная статистика стала бы наверное 90% нагрузкой для дб

Если это слишком специфичный вопрос, то извиняюсь. Просто мне казалось, что много кто подобную статистику собирал и интересно было бы узнать кто как это делал ?

Страница 1261 из 1594