@rubylang

Страница 24 из 1684
Eugene
30.05.2016
09:20:06
Большое спасибо

Pretorian
30.05.2016
09:20:10
В сообщении "Нужен чат с живыми разработчиками"

Антон
30.05.2016
09:26:33
тут роботов исптывают - ну откуда в телеграме живые разработчики?

Petr
30.05.2016
09:28:23
Я только учусь, поэтому читаю и впитываю необходимое :)

Google
Pretorian
30.05.2016
09:34:23
Роботы не роботы, я живой

Aldar
30.05.2016
09:39:07
Вопрос с собеседования, вот надо после регистрации нового пользователя ему емейл отправлять, откуда это лучше делать с точки зрения MVC?

Pretorian
30.05.2016
09:40:10
посмотри как расшифровывается MVC и будет понятно

М - БД, V - вьюха, C - контроллер

Антон
30.05.2016
09:43:07
тоесть отправлять надо из Сервиса регистрации, который вызывается из контроллера

Pretorian
30.05.2016
09:43:36
Ага, а прочитает его естественно М и передаст в контроллер

Антон
30.05.2016
09:44:00
мммм... нет

Eugene
30.05.2016
09:44:01
Вроде бы контроллер. Но каждый пишет как хочет. Там есть три политики писанины. Кто делает жирными модели, кто-то контроллеры, есть ещё которые большие куски выводят то ли в хелперы то ли в ассеты.

Pretorian
30.05.2016
09:44:03
мыло прочитает из БД

Контроллер работает с пользователями

Антон
30.05.2016
09:45:37
controller#create def create respond_with RegistrationService(params) RegistrationService validate register send_email if register return object or nil

Pretorian
30.05.2016
09:47:19
И?

Тут ror, а говорили об MVC

Google
Антон
30.05.2016
09:49:41
дело в том что это грязный MVC то что я предлагаю за пределами MVC

хотя если асбтрагироваться то в контроллере - правильный ответ, но вас тогда неправильно поймут

Pretorian
30.05.2016
09:51:00
Если будет крассиво, то какая разница тебе

А, ну да, это же нанимателю для галочки надо )

Антон
30.05.2016
09:52:41
вопрос устаревший :)

Pretorian
30.05.2016
09:59:01
Кстати, знает кто гем по экваригу сбера?

yopp
30.05.2016
11:51:11
Я просто только спамил в вк паблики
это я вчера в рассылке запостил

а они как попёрли!

Eugene
30.05.2016
11:57:02
а они как попёрли!
Как немцы в 41

Pretorian
30.05.2016
11:58:15
Не, как беженцы за помощью, так точнее

Michael
30.05.2016
19:08:32
Подскажите хорошую книгу по регулярным выражениям на русском

Mikhail
30.05.2016
19:13:26
книгу?

точно книгу?

Michael
30.05.2016
19:14:11
На самом деле без разници. Просто хочу углубиться в тему

Mikhail
30.05.2016
19:14:19
зайди на rubular

и для реальной задачи потыкай. Там снизу основы есть. Остальное все в гугле

Michael
30.05.2016
19:15:10
Да основы я знаю. Говорю же хочу углубиться

v
30.05.2016
19:15:21
Поищи Фридл.Л. - регулярные выражения

Mikhail
30.05.2016
19:16:04
Да основы я знаю. Говорю же хочу углубиться
дай задачку, куда углубляешься. Тоже копну поглубже

Michael
30.05.2016
19:17:52
Конкретных задачь, которые я не знаю как решить я не знаю, но подозреваю что регулярки способны на большее

Google
Mikhail
30.05.2016
19:18:17
просто не встречал задач таких, где основы регулярки не помогают

Aldar
30.05.2016
19:18:21
http://regex.alf.nu/

Michael
30.05.2016
19:18:46
Хочу понять что можно с их помощью делать кроме как mathdata

v
30.05.2016
19:19:15
ооооо

это плохой пцуть

Michael
30.05.2016
19:20:04
Почему плохой?

v
30.05.2016
19:20:40
приводит к желанию использовать регулярки где ни попадя

Michael
30.05.2016
19:21:14
У меня просто проект в котором без них вообще никуда

yopp
30.05.2016
19:22:00
У меня просто проект в котором без них вообще никуда
Попробуй токенизацию и свою виртуальную машину ;)))

racc там.

Michael
30.05.2016
19:22:29
По крайней мерее я не знаю другого способа прочитать 2-х Мб текстовый файл с расписанием

Рейсов

v
30.05.2016
19:24:27
ээ

Michael
30.05.2016
19:24:40
Который содержит не реальное кол-во строк и не все строки стандартного образца

v
30.05.2016
19:24:56
так это не для регулярок вроде задача-то?

Michael
30.05.2016
19:26:41
А как вы решаете подобные задачи?

Антон
30.05.2016
19:27:23
мы их не ставим :)

или человек, или автомат с человеком

Michael
30.05.2016
19:29:10
Не понимаю о чем ты

Антон
30.05.2016
19:31:09
надо смотреть сколько стоит победить поставщика данных, сколько стоит разработка автомата, сколько стоит полуавтомат сравнить суммы выбрать результат

Google
Антон
30.05.2016
19:32:13
парсили прайсы полуавтоматом, когда непонятные данные парсит человек и учит автомат, не аи все получалось

данных сводящих непонятные данные было всего 1м штук

Michael
30.05.2016
19:33:53
https://www.dropbox.com/s/kvodc5sqk9l3qd8/file_for_meridian-2.txt?dl=0

Пример файла

Может кто-то подскажет более интересное решение чем регулярка

Антон
30.05.2016
19:35:43
я в телефоне, посмотрю утром

Aldar
30.05.2016
19:35:49
Что надо с этим файлом делать?

yopp
30.05.2016
19:36:14
Простой пример

Admin
ERROR: S client not available

yopp
30.05.2016
19:36:43
Сложные грамматики конечно руками никто не строит, для этого уже есть инструменты.

Посмотри как oga сделана

Michael
30.05.2016
19:37:38
А вот сама регулярка https://gist.github.com/sanyco86/2558d661467068fa7fb3e308b4932a82

Все нормально работает, но если есть путь более изящный, я был бы рад совету

Спасибо. Гляну

Victor
31.05.2016
06:51:13
@lutsko86 проблема с регуляркой такого размера — в том, что она сама по себе «программа», только ни фига не отлаживаемая (то есть тяжело «залезть в строку 37» и посмотреть почему не проматчилось). я бы для такого случая писал нормальный ОО парсер, используя рубишный StringScanner. это позволяет наблюдать и отлаживать состояние во время парсинга, кидать осмысленные ошибки типа «сейчас ожидалось то, а получено это» и т.д.

Michael
31.05.2016
06:52:33
можешь посоветовать, для этого какое-то чтиво? а то я пока не особо врубаюсь, что это и как его использовать

Victor
31.05.2016
06:56:11
да я на пальцах ща объясню :)

Michael
31.05.2016
06:57:19
)

Victor
31.05.2016
07:00:35
смотри. если перевести твой дикий регексп на русский, то входные данные описываются (беру просто с начала) как-то типа: * сначала строчка "1AIRLINE STANDARD SCHEDULE DATA SET" * потом 5 любых символов * потом 1 символ или пробел (и это будет NumberOfSeasons) * потом 150 любых символов * потом 3 символа или пробела (а точнее, насколько я понимаю, от 1 до 3 символов, добитые пробелами) — и это будет DataSetSerialNumber и т.д.

Google
Victor
31.05.2016
07:00:42
так вот, вместо записывания регекспом

эту логику можно превратить в код на руби с использованием StringScanner

примерно так (очень условно):

Pretorian
31.05.2016
07:02:06
Маленький пример идеи плиз

Victor
31.05.2016
07:03:00
scan = StringScanner.new(source) scan.skip("1AIRLINE STANDARD SCHEDULE DATA SET") scan.skip(/[\w\s]{5}/) num_of_seasons = scan.scan(/[\w\s]/) scan.skip(/[\w\s]{150}/) ds_sn = scan.scan(/[\w\s]{3}/)и т.д.

в отличие от одного регекспа, охватывающего прям всё, тут ты можешь структурировать код (например, разнести похожие части по методам), отлаживать (хотя бы `puts`ом, ну или нормальным отладчиком), кидать исключения в нужный момент если сканнер вдруг говорит что там нет того, что ты ожидал — и можешь при этом точно сообщить «на строке такой-то ожидалось X, а на самом деле там Y»

Michael
31.05.2016
07:08:13
ну с хидером все просто, а вот с самим расписанием, мне не особо понятно как пременить. много уж заморочек(нужны только раскисания которые начинаются с 3 U6,)

3 U6 70101J15DEC1518DEC15 2345 DME18551855+0300 SIP21252125+0200A 321XX S 000003 потом как научить его различать что DME это начальный аэропорт а SIP это конечный аэропорт

не путать даты вылета и прилета и т.д.

Victor
31.05.2016
07:11:13
ща, 30 секунд

Michael
31.05.2016
07:11:19
тоесть хотябы научить его читать 3 U6 29510101J17DEC1524DEC15 4 SVX16551655+0500 GYD19001900+04001 320XX S 007503 3 U6 29520101J17DEC1524DEC15 4 GYD20002000+04001 SVX00050005+0500 320XX S 007555 3 U6 98960101J20DEC1520DEC15 7 NJC10001000+0500 UFA12201220+0500 321YTGSQLBVHMKXPNEAWUOR S 010968

вот эти три вида

а остальные игнормть

каждая строка это отдельный рейс

Victor
31.05.2016
07:22:15
смотри. допустим, мы находимся на новой строке. мы делаем примерно следующее (мне лень всматриваться, я предположу что оно реально в строку помещается, без переносов): unless scanner.scan(/. ../) == '3 U6' scanner.skip_until("\n") next # ну, условно говоря, переходим к след.строке end scanner.skip(/\s+/) flight_num = scanner.scan(/\d{1,4}/) it_var = scanner.scan(/\d{2}/)и так далее, прямо по твоему регекспу до конца строчки. там будут два повторяющихся куска DME18551855+0300 и SIP21252125+0200A (насколько я понимаю), в этот момент делаешь что-нибудь типа: from = read_airport(scanner) to = read_airport(scanner)ну и т.д.

Michael
31.05.2016
07:25:03
более или менее понял, буду пробовать.

огромное спасибо

yopp
31.05.2016
07:47:08
огромное спасибо
https://github.com/kolesnikovde/ssim

Всё уже украли

Michael
31.05.2016
07:50:03
хехе

Pretorian
31.05.2016
07:51:09
А, что сейчас рубигем не показывает сколько гемов в репозитарии?

Ха, и npm после редизайна перестал показывать )

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