@rubylang

Страница 236 из 1684
yopp
25.07.2016
14:47:26
а они и так будут кидаться

ты можешь их наверх не прокидывать и сглатывать

если у тебя автоподключение

но в остальном, тебе не надо 1к эксепшенов в секунду перелопачивать :)

Google
ojab
25.07.2016
14:49:07
undefined method `login!' for #<E
да, криво смотрел. client.check и прочие команды оборачиваются в .with_login. client.instance_variable_get(:@conn).connection.login! падает?

yopp
25.07.2016
14:50:05
а кажется чот было про более низкую работу с сокетами

в stdlib

Nikolay
25.07.2016
14:52:39
да, криво смотрел. client.check и прочие команды оборачиваются в .with_login. client.instance_variable_get(:@conn).connection.login! падает?
/home/mulder/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/epp-client-2.1.0/lib/epp-client/server.rb:206:in `block in connection': no block given (yield) (LocalJumpError)

ojab
25.07.2016
14:52:46
:/

Nikolay
25.07.2016
14:53:37
:/
там ваще код какой-то странный, как по мне

I
25.07.2016
14:53:54
@igorpavlov https://github.com/jruby/jruby/wiki/PerformanceTuning#common-profiling-hotspots Stack trace/backtrace generation: Generating backtraces for exceptions, Kernel#caller, etc are more expensive on JRuby due to the way the JVM optimizes.
Гайдлайны я видел многие. Безуспешно пытаюсь найти странную статью(даже не помню, по какому из языков), где у автора проверка на null была практически такой же медленной, как и try-catch

Nikolay
25.07.2016
14:55:30
epp.rb:9:in `block in <main>': undefined method `login!' for main:Object (NoMethodError)

I
25.07.2016
14:56:01
а разве передать ничего не надо параметром?

Konstantin
25.07.2016
14:56:44
@igorpavlov практический пример https://github.com/jruby/jruby/issues/3808

ojab
25.07.2016
14:56:52
ну ок, щаз я попробую тут https://www.hexonet.net/software/epp-gateway-live-test заюзать

Google
Konstantin
25.07.2016
14:58:36
по этой же причине в jruby отключены по умолчанию бекирейсы для errno

Nikolay
25.07.2016
15:07:12
аа.. не могу https://pp.vk.me/c637431/v637431317/6ea/EM7G0zjz-i0.jpg

/home/mulder/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/epp-client-2.1.0/lib/epp-client/server.rb:274:in `login!': Authentication error (code 2200) (EPP::ResponseError)

я не понял как ему порт не дефолтно 700 скормить

ojab
25.07.2016
15:12:39
EPP::Client.new('test.user', 'test.passw0rd', 'epp.ispapi.net', port: 1700)

на этом тестовом сервере у меня client.check EPP::Domain::Check.new('google.com') нормально выполняется, кстати

Алиф
25.07.2016
15:14:26
i have this http://prntscr.com/bxb5fd i like to add this for each project http://prntscr.com/bxb6g7 is anybody know how to do it it ActiveAdmin

ojab
25.07.2016
15:16:24
да у меня тоже.. интересно, получается.
client.instance_variable_get(:@conn).connection { client.instance_variable_get(:@conn).send(:login!) }

Nikolay
25.07.2016
15:18:15
эээ

что это за адское вложение

кажется перловый клиент тоже сокет открывать не хочет изза этой ошибки

ojab
25.07.2016
15:27:36
ну это мы достаём connection и вызываем его приватный метод .login!

api'шка странная у этого epp-client'a, да

зашибись, после логина request и response нельзя вытащить

ну да пофиг, понятно будет хотя бы — логинится или нет

Nikolay
25.07.2016
15:31:33
ну на отот гостевой гейт вроде ок

но то хз чье

ojab
25.07.2016
15:40:29
def read _read_from_socket rescue TimeoutError, Errno::ECONNRESET => e @socket.close raise e end
А почему не делать ensure с socket.close уровнем выше (там же где сокет открывается) , а здесь вообще ничего не перехватывать, кстати?

Eugene
25.07.2016
15:48:41
досыпал литературы, объединил 2 версии

Google
Konstantin
25.07.2016
15:49:27
ojab сейчас гляну

ojab хм, спасибо

ojab
25.07.2016
15:56:21
._.

Artemy
25.07.2016
16:51:26
есть вопрос, как построить в рельсах вот такое: надо предупредить юзера о том что его акк-т будет удален, через опр кол-во напоминаний, например раз в неделю, три напоминания и потом акк-т удаляется

я так думаю модель юзеров и напоминаний (порядок напоминания)

yopp
25.07.2016
16:52:04
счётчик сделать да и всё

и сбрасывать при входе, если надо живых оставлять

Artemy
25.07.2016
16:52:17
ну да вот в напоминании получается

yopp
25.07.2016
16:52:28
зачем в напоминании?

Artemy
25.07.2016
16:52:37
в юзере прям?

yopp
25.07.2016
16:52:50
eviction_notes_count, да

выселют-то не напоминание, а юзера

Artemy
25.07.2016
16:53:26
а во, еще же дата нужна посл напоминания ему

yopp
25.07.2016
16:53:51
считать от last_login_at

ojab
25.07.2016
16:53:58
А почему просто по дате последнего захода не считать?

Artemy
25.07.2016
16:54:05
причем напоминания есть пуш в мобилу и на мыло

у меня пока мысли такие: 1. крон джоба видит юзер давно не заходил, по дате логина

2. переводит его в статус удаляемых, и начинает слать уведомления

ojab
25.07.2016
16:55:06
крон джоба -> ActiveJob + whenever

Artemy
25.07.2016
16:55:27
3. уведомление - это дата, токен, и уходит на мыло

Google
Artemy
25.07.2016
16:56:05
4. если юзер перешел по ссылке из мыла, по токену выводим его из статуса удаляемых и затираем все напоминания

5. вторая джоба смотрит удаляемых и сколько напоминаний им было, если нужно напомнить еще и период уже подошел (по дате посл напоминания) то шлем очередное

6. если кол-во напоминаний уже достигло лимита то удаляем юзера

счетчик напоминаний по сути не нужет тогда, т.к. напоминания у нас есть в табле, просто смотрим дату последнего и нее танцуем

ojab
25.07.2016
16:58:39
зачем кол-во напоминаний считать? last_login + (max_notification_count * period_between_notifications) > current_time -> delete

да

yopp
25.07.2016
16:58:47
а потом чувак залогинился и ты бегаешь и удаляешь всякое

Artemy
25.07.2016
17:00:03
да идея с периодом на кол-во напоминаний хорошая

Admin
ERROR: S client not available

ojab
25.07.2016
17:00:26
прозреваю что подобная приблуда для devise уже написана

юзеры же devise'овые?

https://github.com/j-mcnally/devise_account_expireable

старовато

Artemy
25.07.2016
17:02:02
ну там не совсем так, не device

по итогу получается, второй вариант в юзера запизать кол-во напоминаний и дату последнего

ojab
25.07.2016
17:03:11
зачем? Это всё можно из даты захода и периода между напоминаниями высчитать

Artemy
25.07.2016
17:03:34
поясни?

мне просто нужно не больше скольки-то раз ему напомнить и через нужный период

ojab
25.07.2016
17:04:06
(current_time - last_login) / time_between_notifications

Artemy
25.07.2016
17:04:29
обе переменные настраиваиются в приложухе

Google
Artemy
25.07.2016
17:05:05
(current_time - last_login) / time_between_notifications
ок, а как понять что вот минут пять назад ему не ушло уведомление

ojab
25.07.2016
17:05:30
в общем случае никак, даже если завести counter

Artemy
25.07.2016
17:05:49
ну вот говорю хранить дату последнего напоминания

ojab
25.07.2016
17:06:03
ты не определишь что последнее напоминание дошло

почта вполне может не дойти, как и push'и и что угодно

Artemy
25.07.2016
17:06:39
ну вот поэтому и дается несколько попыток раз в неделю

а так да если мыло мертвое, то можно грохать юзера

и все таки надо кол-во попыток, если например раньше было 5 напоминаний а потом админ решил что всего 3 надо и раз в день, то джоба должна грохнуть всех у кого уже было 3-4 напоминания

пусть не в юзере а отдельно, т.е. сущности что-то вроде user_id, counter, last_notify_at должно хватить

ojab
25.07.2016
17:10:08
нухз, по мне так лучше какую-нибудь эвристику прикрутить (не rocket science всё же), чем в базе дополнительную инфу сомнительной ценности держать

эвристику всё равно придётся прикручивать для кейсов "потом админ решил"

Artemy
25.07.2016
17:11:58
ну я понял мысль с пересчетом, обдумаю еще, поэтому и понаписал тут это все, спасибо за совет )

Michael
25.07.2016
17:12:31
Добрый вечер, подскажите как из переменной формата csv body = "foo,bar,get\r\nfoo1,bar1,get1\r\nfoo2,,get2" получить подобный хеш { {foo: 'foo1', bar: 'bar1', get: 'get1'}, {foo: 'foo2', bar: '', get: 'get2'} } из файлика я бы сделал что то вроде CSV.read('file.csv', headers: true, col_sep: ',').map(&:to_hash) а вот из переменной как?

ojab
25.07.2016
17:12:57
.map(&:to_hash) -> .to_h

CSV.parse(body)

CSV.parse(body, headers: true) то бишь

col_sep по умолчанию запятая, csv же

Michael
25.07.2016
17:14:51
ага вот даже как все просто, спасибо большое

ojab
25.07.2016
17:14:53
whoops, насчёт .to_h я погорячился, да

Michael
25.07.2016
17:15:09
да я понял

CSV.parse(csv.body, headers: true).map(&:to_hash)

Страница 236 из 1684