
Vitaliy
09.03.2017
16:33:05
И по одному из проектов в планах - запустить его на наборе из двух серверов - сервер с балансировщиком нагрузки спереди, и с логическим сервером сзади. Чтобы в случае зашкаливающей нагрузки - добавить еще парочку логических серверов без боли.
Для этого еще нужно будет вынести файлы во внешнее хранилище (AWS S3) и базу данных (compose.com)

Денис
09.03.2017
16:39:36
а плейбуки - ты сам или где-то лежат хорошие

Google

Денис
09.03.2017
16:40:28
а чем мониторишь нагрузку/доступность?

Vitaliy
09.03.2017
16:40:52
Плейбуки здесь подобрал: https://galaxy.ansible.com/
Наверное по-хорошему мне стоит чуть подкрутить свои скрипты, но лень - то, что набрал на ansible galaxy, работает исправно
Нагрузку мониторю new relic, ошибки логирую bugsnag
бесплатных тарифов хватает

v
09.03.2017
17:11:26

Vitaliy
09.03.2017
17:12:56
на каком этапе программисту его целесообразно применять? первые пару серверов настроить вручную, понять, что это как-то долго и рутинно - и перейти на ансибл

Денис
09.03.2017
17:15:05
bugsnag не знал, спасибо
не знаешь, в чём принципиальная разница

Vitaliy
09.03.2017
17:16:35
когда знакомился с такими инструментами, пробовал на chef тоже пописать. не понравилось, с ansible приятнее оказалось работать
чисто субъективное, но нескольких коллег знаю, которые с chef ушли на ansible, по той же причине
а так - это аналоги

Google

Vitaliy
09.03.2017
17:17:26
chef на руби, и конфиги рубишные с dsl. а ansible на питоне, и конфиги в yml

v
09.03.2017
17:18:00

Vitaliy
09.03.2017
17:18:30
а, если в этом плане на каком этапе - да, покупаю чистый сервер и ставлю на него все нужное

Igor
09.03.2017
17:19:29
str1.each_byte.zip(str2.each_byte).map { |byte1, byte2| (byte1 ^ byte2).chr }.join
strxor в функциональном стиле
есть идеи лучше? :)
устроим бенчмарк баттл )

v
09.03.2017
17:25:48

ojab
09.03.2017
17:26:22

Igor
09.03.2017
17:26:27

Nikolay
09.03.2017
17:26:44

Igor
09.03.2017
17:26:54

ojab
09.03.2017
17:27:02
а для бенчмаркинга нужно знать типичные длины str1 & str2, как минимум

Igor
09.03.2017
17:27:10
8 байт
фиксированно
пока есть три варианта в бенчмарке
упоротый функциональный
простой цикл
и unpack

Google

Nikolay
09.03.2017
17:28:08
готовлюсь морально )
уже выучил его? наткнулся тут на курс мейла, не знаю слишком ли он нубский, но на всякий случай поделюсь https://www.youtube.com/playlist?list=PLrCZzMib1e9pJchUR-KGNJvz2BA6XjIPr

Igor
09.03.2017
17:28:29
я десять лет назад писал скрипт на перле
который заполняет таблицу правил фаерволла

Nikolay
09.03.2017
17:28:39
последний оплот перла в россии, наверно

ojab
09.03.2017
17:28:42
Comparison:
.bytes: 181178.8 i/s
.each_byte: 38316.1 i/s - 4.73x slower
таки да

Igor
09.03.2017
17:29:03
ну там энумератор все таки
это логично
а если упороться следующим образом
each_byte.each_with_index
то по памяти я думаю будет большой выйгрыш
но всем насрать на память в 2017 году

Igor
09.03.2017
17:34:13
Returns an array of bytes in str. **This is a shorthand for str.each_byte.to_a.**
если верить сорцам которые показываются в документации
то идет вызов одной и той-же функции rb_str_enumerate_bytes
только с отличием во втором аргументе

ojab
09.03.2017
17:40:14
https://gist.github.com/ojab/ad19ea6702060254a4729c786aef4252

Igor
09.03.2017
17:46:48
про getbyte я вообще не подумал
там есть еще вариант

Google

Igor
09.03.2017
17:51:52
str1.bytes.zip(str2.bytes).map { |byte1, byte2| byte1 ^ byte2 }.pack('C*')
хотя нет
https://gist.github.com/t3hk0d3/6812c11b8b8180fb3780be29332498cd
.pack('C*') нехило так быстрее
чем chr + join
ojab x.report('.getbyte + pack') { Array.new(STR1.bytesize) { |i| STR1.getbyte(i) ^ STR2.getbyte(i) }.pack('C*') }
вот этот вариант рвет вообще все
с большим отрывом

ojab
09.03.2017
17:59:14
неудивительно

Admin
ERROR: S client not available

Igor
09.03.2017
18:05:05
omg
http://blog.50projects.com/2010/12/ruby-string-xor-optimizations.html
https://github.com/fny/xorcist
охуеть оказывается как люди упарываются

Semyon
09.03.2017
18:14:25
тут нормально всё
читабельный код

Nikolay
09.03.2017
18:14:49
я не про код

Igor
09.03.2017
18:16:02
кстати

Google

Igor
09.03.2017
18:16:08
если длинна строк равна 8 байтам
всегда
то можно вообще на халяву сработать
[STR1.unpack('Q').first ^ STR2.unpack('Q').first].pack('Q')
оно в два раза быстрее работает
чем getbyte + pack
https://gist.github.com/t3hk0d3/6812c11b8b8180fb3780be29332498cd

Олег
09.03.2017
22:10:18

Alex
09.03.2017
22:17:43
телепатии конечно не хватает порой

Nikita
09.03.2017
23:00:02
ребята, может помнит(знает) кто сайт, интерактивный, с примерами атак
sql инъекции, xss и т.д.
не могу найти...

Alex
09.03.2017
23:07:37
типа, чтоб потренироваться?

Nikita
09.03.2017
23:08:33
та нет, там просто интерактивно, в крации описываются виды атак
основных

Michael
10.03.2017
09:12:51
Добрый день, есть ActiveRecord::Relation,
у объектов есть поле priority в нем может быть только nil, 'MUSTGO', 'NORMAN'
мне нужно сделать order priority, таким образом что бы сортировка была такой
MUSTGO
NORMAN
nil
как можно написать свою сортировку, есть ли, что то типа .order(priority: ['MUSTGO', 'NORMAN', nil])

Andrey
10.03.2017
09:15:11
postgres?

Николай
10.03.2017
09:15:25
ORDER BY CASE

Michael
10.03.2017
09:15:25
да

Andrey
10.03.2017
09:16:39
order("priority DESC NULLS LAST")

Michael
10.03.2017
09:16:48
ORDER BY CASE
что то типа
order("
CASE
WHEN priority = 'MUSTGO' THEN '1'
WHEN priority = 'NORMAN' THEN '2'
WHEN priority = NULL THEN '3'
END")
?

Andrey
10.03.2017
09:16:49
как то так должно быть