
Nikita
23.04.2018
14:26:24

ojab
23.04.2018
14:26:56
хе, есть вероятность что "платформа" хранит в binary, лучше в mysql смотреть

Nikita
23.04.2018
14:27:16
я думаю так и есть, но он не принимает бинарник

Google

Nikita
23.04.2018
14:28:03
еслт бы я на каком нить чистом sql сделал бы insert(Registered) values(1) то он бы съел :)

ojab
23.04.2018
14:28:13
ну и да, тут без вариантов — или переопределять type_cast или для всех boolean полей прописывать кастомный сериализатор/тип/etc

KEPLER2B
23.04.2018
14:28:28
class Integer
def to_bin(width)
'%0*b' % [width, self]
end
end
собственно to_bin

Nikita
23.04.2018
14:29:23
собственно to_bin
мне просто нужно запретить рельсам конвертить 1 и 0 в бинарник, мне не нужно ничего конвертить

ojab
23.04.2018
14:30:33

KEPLER2B
23.04.2018
14:31:10
как же не нужно если на входе TrueClass а на выходе бинарь
или я не в струю уже)))

Nikita
23.04.2018
14:35:43

Александр
23.04.2018
14:43:00
да
я розобралсо, у нас там косяк с paranoia был = )
Сори за оффтоп, каким шестигранником меняются колодки на мазда три БЛ?

Dmitry
23.04.2018
14:45:17
надо мануал читать =)

Google

Богдан
23.04.2018
15:19:34
Господа, а как лучше всего реализовать, например нужно переодически вытаскивать с другого сайта информацию, а потом на основе этой информации делать рассылку? Как бы реализованый кусок по вытаскиванию и по рассылке, а как лучше это все автоматизировать? Вытаскивать через whenewer( тут как бы не обьязательно в очередь сохранять, так как опрос будет очень часто), а рассылку уже нужно что бы была очередь - через Active Job?

s
23.04.2018
15:54:37
что там использовать для шедулера и запуска фонового процесса – это как раз детали
что значит вытаскивать, как часто, как парсить-форматировать, нужно ли сохранить понавытасканное и куда
вот это более важные вопросы)
если прям часто, то и whenewer не нужен, сделать крошечный сервис, который внутри себя треды крутит и постоянно что-то “вытаскивает”/обрабатывает

Богдан
23.04.2018
16:07:08

s
23.04.2018
16:08:38
я бы просто сделал бесконечный тред вместо whenever и оформил бы запуск этого в виде сервиса systemd
иначе придется еще заботиться о том, чтобы второй процесс не стартовал когда первый еще не закончил работу

Nikita
23.04.2018
16:10:37
@nottewae ojab в итоге забил болт и сконвертировал поля в tinyint, платформе пофигу, жизнь продолжается.

Богдан
23.04.2018
16:11:33

s
23.04.2018
16:12:42
я скорее не о последовательности выполнения. а о том, что если интервал нужен короткий, то высока вероятность встрять на получении кучи процессов, которые запустились и что-то пытаются парсить и писать в базу одновременно
можно всякие lock-файлы или редис, конечно, использовать для предотвращения этого
но это, имо, решение проблемы, которую вообще можно избежать посмотрев на задачу под другим углом

Богдан
23.04.2018
16:15:26
Хм ... а если будет служба разве проблемы с блокироваками в базе не исчезнут?

s
23.04.2018
16:17:43
если там будет один тред, бесконечно выполняющий последовательность действий http-get -> распарсить -> сохранить -> заснуть на 30 сек
то откуда возьмутся блокировки?
а для рассылки – ну да, джоб, который создат запись о рассылке, в которой храняться таймстепы от-до. и запустит джоб майлера для рендеринга и отправки всего этого

Богдан
23.04.2018
16:23:07
а рассылка должна быть не в общем треде со сборщиком данных? Все-таки там тоже идет обращение к бд?

Rustam
23.04.2018
16:27:35
в разных тредах

Богдан
23.04.2018
16:32:53
в разных тредах
ну а как тогда разруливать блокрирвки базы, если например один тред будет писать в базу, а другой в этот момент будет читать эти данные?

Rustam
23.04.2018
16:39:05
у тебя что блокировка в бд стразу на всю таблицу стоит?
да и насколько знаю база в этом случае сама разрулит

Google

Nikita
23.04.2018
18:33:02
Можно лочить только часть тейбла?)

pny
23.04.2018
19:07:50
Возможно

Denis
23.04.2018
19:16:38
Rails 5.2.0
NoMethodError (undefined method `verbose_query_logs=' for ActiveRecord::Base:Class):
Что это такое? И как решить?

KEPLER2B
23.04.2018
20:09:04
оно? https://github.com/flyerhzm/bullet/issues/395
народ кто кто сталкивался? нужно искать по sha256 в базе какой тип лучше юзать bytea? насколько он быстрее текста ищет, что по нагрузкам?

Wndrfl
23.04.2018
20:10:59
всем привет)

KEPLER2B
23.04.2018
20:11:17
БД PG

Alex
23.04.2018
20:11:52

KEPLER2B
23.04.2018
20:12:54
Это 5,2,0
не думаю что проблем разный.... тем не менее

ojab
23.04.2018
20:23:26

KEPLER2B
23.04.2018
20:29:22
индексу пофиг, по большому счёту
хотелось бы подробностей, а если там млн+ записей так ли пофик? Ладно, подробности возможны, только если у кого то реально возникали ситуации. На то и был вопрос.

ojab
23.04.2018
20:30:18
если важна производительность на млн+ записей — делаешь hash index, ему пофиг

ojab
23.04.2018
20:30:51
ибо varchar и byte хешируются одинаково

KEPLER2B
23.04.2018
20:32:40
оно? CREATE INDEX name ON table USING HASH (column);

ojab
23.04.2018
20:33:13
ага

KEPLER2B
23.04.2018
20:33:30
сенк)

ojab
23.04.2018
20:33:39
но учитывай что оно в wal не попадает, если меньше десяточки (оно, вроже, об этой warning выдаёт)

KEPLER2B
23.04.2018
20:34:44
там никогда меньше не будет

Rustam
24.04.2018
06:03:00
можешь джобы завести и сунуть их в крон

Artem
24.04.2018
06:35:36
Всем привет. Встала задача реализовать geoip определение города. Есть n количество городов у всех есть ширина и долгота. По геоайпи надо подсунуть клиенту ближайший. Подскажите куда копать ?

Google

Aleksey
24.04.2018
06:38:53
скорее всего в сторону платных геолокационных сервисов

Deploy
24.04.2018
06:41:27
https://github.com/yhirose/maxminddb

Ilya
24.04.2018
06:43:55

Artem
24.04.2018
06:45:05
По сути нужно гонять все точки городов, как это все будет дружить с производительностью?

Ilya
24.04.2018
06:47:29

Artem
24.04.2018
06:51:35
А кто-нибудь работал с geodist redis
?

Admin
ERROR: S client not available

Artem
24.04.2018
07:16:20
Если кому интересно, редис отлично подходит для этой задачи
Спасибо тем кто откликнулся

Lavrushchik
24.04.2018
07:52:01
подскажет кто - как через selenium-webdriver заполнить форму для логина по определённому урлу?
ну или хотя бы найти адекватную доку по ведбрайверу под руби

Dmitry
24.04.2018
07:54:12
там ж элементарно, у меня правда под рукой для ватира, но там мало чем отличаеться
browser = Watir::Browser.new :chrome
# , switches: ['--incognito']
browser.goto 'instagram.com/accounts/login/'
#Navigate for username and password fields, inject info
ap 'Logging in..'
browser.text_field(:name => 'username').set "#{username}"
sleep(rand(3..7))
browser.text_field(:name => 'password').set "#{password}"

Lavrushchik
24.04.2018
07:56:19
О, прикольно
Тогда получается, что для селениума можно юзать доку от ватира, если она есть?

Dmitry
24.04.2018
07:56:52
https://github.com/SeleniumHQ/selenium/wiki/Ruby-Bindings

Lavrushchik
24.04.2018
07:57:59
Селениум, как я понял, полностью эмулирует работу браузере и можно потом вытянуть данные, которые через js подтягиваются?

Dmitry
24.04.2018
07:59:35
http://seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver.html
угу

Google

ojab
24.04.2018
08:28:30

Andiskiy
24.04.2018
09:09:09
Добрый день, есть такой хэш {["yes", 0.45]=>1, ["yes", 0.7]=>1, ["yes", 1.0]=>1, ["no", 1.0]=>1, ["no"=> 0.5]=>1}
подскажите пожалуйста как можно получить такой
{'yes' => 2.15, 'no'=> 1.5}

Alex
24.04.2018
09:10:24
{'yes' => 2.15, 'no', 1.5}
не похоже на хэш

Andiskiy
24.04.2018
09:11:19

Смерть
24.04.2018
09:15:48
Добрый день, есть такой хэш {["yes", 0.45]=>1, ["yes", 0.7]=>1, ["yes", 1.0]=>1, ["no", 1.0]=>1, ["no"=> 0.5]=>1}
подскажите пожалуйста как можно получить такой
{'yes' => 2.15, 'no'=> 1.5}
{...}.keys.inject({}) { |p, key| p[key[0]] = key[1] }

ojab
24.04.2018
09:17:04
hash.reduce(Hash.new { |h, k| h[k] = 0 }) { |memo (k, v)| memo[k] += v }

Nick
24.04.2018
09:19:20
2.5.0 :005 > hash = {["yes", 0.45]=>1, ["yes", 0.7]=>1, ["yes", 1.0]=>1, ["no", 1.0]=>1, ["no", 0.5]=>1}
=> {["yes", 0.45]=>1, ["yes", 0.7]=>1, ["yes", 1.0]=>1, ["no", 1.0]=>1, ["no", 0.5]=>1}
2.5.0 :006 > hash.keys.inject({}) { |memo, el| memo[el.first] ||= 0; memo[el.first] += el.last; memo }
=> {"yes"=>2.15, "no"=>1.5}

Andiskiy
24.04.2018
09:22:54

ojab
24.04.2018
09:24:05
да, фигню написал. hash.reduce(Hash.new { |h, k| h[k] = 0 }) { |memo, ((k, v), _)| memo[k] += v; memo }

Andiskiy
24.04.2018
09:24:55

Александр
24.04.2018
09:25:10
trello работает?

ojab
24.04.2018
09:25:28

Смерть
24.04.2018
09:27:08
А я, полную фигню написал, сорян, чет я не понял вопрос

Andiskiy
24.04.2018
09:27:40
точно. Спасибо большое всем кто откликнулся. я затупил немного.

Nick
24.04.2018
09:35:07

Alex
24.04.2018
09:36:14
Эти РКН блокировки уже и до РБ докатились, магистральные провайдеры ставят блок и у нас уже у некоторых linkedin и другие сайты не открываются

Александр
24.04.2018
09:39:15
Белоруссия?