
Ro
17.10.2017
21:42:41
насчет сортировки - метод не работает в случае если строка - 1 гб, например
это не рационально, обычно кандидат должен уточнять условия задачи, а не делать предположения без разрешения)

spartakusQ
17.10.2017
21:44:23

Google

Ro
17.10.2017
21:50:32
в каком смысле?
типа тебе не понравится задача?))

spartakusQ
17.10.2017
22:00:23
Пол часа на собесед и всё время уточняющие вопросы спрашиваешь.

Ro
17.10.2017
22:42:19
обычно час дают на 1 задачу
полчаса редко встречал
точнее никогда

Fedor
18.10.2017
04:12:53
Каждому символу соответствует количество вхождений
И вот оно декрементируется

Ro
18.10.2017
04:24:36
да, лучше декременировать
и 1 хеш

Vlad
18.10.2017
04:32:55
На самом деле, я тоже верю, что алгоритмы человек должен если не знать, то хотя бы понимать нахера они, чем важны и в необходимой ситуации придумать как что то сделать. А если он еще и знает кучу разных уже изобретенных велосипедов, дак это вообще хорошо.
Явный пример был в работе. За чуваком, что у нас на фрилансе работал, переписывал его код, сокращая 300-1200 операций до максимум 12. Ну соответственно прирост был на глаза. Собственно после этого мое начальство и перестало с ним работать

Google

Vlad
18.10.2017
04:38:00
*операций записи в базу

Ro
18.10.2017
04:40:08
но справедливости сказать - хоть и спрашивают алгоритмы в конторах типа нашей
но код отстой вообще
лучше бы они код писали нормальный
один тут написал:
loop do
if time_to_do_something
# ...
end
sleep 0.1
end
(упрощенно) т.е. каждые 100 мсек вызывается метод, который вычисляет время, которое осталось до выполнения какой-то операции, и если оно не пришло, возвращает false
почему бы сразу не написать sleep whatever_it_takes
и чтобы оно ждало сколько надо
нет, написал sleep 0.1
к слову, он меня на работу принимал - гонял по алгоритмам)))

Aleksej
18.10.2017
04:42:55

Vlad
18.10.2017
04:42:57
ученик всегда должен превзойти учителя)

Ro
18.10.2017
04:43:29
сейчас уже не лучшая)

Vlad
18.10.2017
04:44:33
я того фриланса за пол года обогнал, в плане чистоты и адекватности именно кода, хотя изначально он меня подтаскивал. Сейчас мой подчиненный меня обогнал, ему тоже потребовалось пол года.

Ro
18.10.2017
04:44:48
или еще пример, код который проверял живучесть определенного сервиса. Код был написан так: service.check || 'healthy'
т.е. если service.check возвращал false, то метод возвращал healthy ?
ну это уже другой выдающийся деятель
при этом все радели за алгоритмы, мудаки
так что я согласен с DHH - что сначала надо научиться писать понятный людям код, а потом уже вые...ваться алгоритмами

Google

Aleksej
18.10.2017
04:46:18
Ну, одна из, по крайней мере. Вообще с кодом забавная ситуация. Меня на одном собеседовании отфутболили, а потом выяснилось, что они даже тестами код не покрывали (код на руби).
Для этого они потом наняли тестера. На мой вопрос в целесообразности тестера теперь, когда код уже написан (с их слов наняли тестера чтобы устранить "отсутствие тестов") - внятно ответить не смогли.

Vlad
18.10.2017
04:46:35
к сожалению, я на той стадии, когда скорее всего пишу полное дерьмо)?

Ro
18.10.2017
04:46:36
хы)

Aleksej
18.10.2017
04:48:59

Vlad
18.10.2017
04:55:29
кто то может маленькое ревью сделать? 35 строк, указать ошибки в стиле написания
*наверное за первые три строки, мне бы просто пальцы отрубили на работе*
https://github.com/sogrinvlad/ruby_practice/blob/master/iptocountry/iptocountry.rb

Konstantin
18.10.2017
05:46:12
Это какой-то отрицательный IQ
одно дело когда ты пишешь дерьмо и это признаешь, а другое - когда у тебя претензии на оригинальность и ты радеешь за алгоритмы, любишь посмотреть какой-нить вопрос в инете и помучать какого-нибудь джуна этим вопросом, на который заранее подглядел ответ)

Ro
18.10.2017
05:53:30
будет понятно что делается хотя бы)

Vlad
18.10.2017
05:54:31
принял, пошел напишу, спасибо, что посмотрел

Vlad
18.10.2017
06:16:53
Ха, начал писать комменты, понял, где прямо сверх люто наговнокодил ?

Andrey
18.10.2017
06:32:27
https://github.com/sogrinvlad/ruby_practice/blob/master/iptocountry/iptocountry.rb#L7-L12
Почему ты здесь делаешь отдельный массив с элементами которые хочешь удалить, а не возьмешь и прямо в цикле не начнешь очищать исходный?

Vlad
18.10.2017
06:34:54
лишняя память, хм, верно...

Andrey
18.10.2017
06:35:13
-ip_arr.index(val) + 3 != 0 Это что за проверка такая? Это подразумевалось? ip_arr.index(val) != 3

Vlad
18.10.2017
06:35:48
Я уже это исправил, это дикое извращение, но решилось на самом деле просто, я забыл про существование reverse!

Nikolay
18.10.2017
06:36:19

Andrey
18.10.2017
06:36:43

Google

Vlad
18.10.2017
06:36:55
цель была получить индекс по счету с конца до начала, при том, последнее считать 0, предпоследнее 1. Крч, да, забыл про реверс
погоди, я накомменчу и запулю
3 минуты еще

Andrey
18.10.2017
06:37:18
что за реверс?
а понял

Nikolay
18.10.2017
06:38:08

Andrey
18.10.2017
06:38:53
В pull request плюсик, да. А тут такого не увидел, это просто файл.
У нас правило что если ревьюверу без комментов не понятно, то строка переписывается =))
название переменной array ни о чем не говорит.

Vlad
18.10.2017
06:44:02

Admin
ERROR: S client not available

Vlad
18.10.2017
06:44:16
Почему так за пушилось?! Rubocop может быть причастен к этому?

Fedor
18.10.2017
06:44:33
врядли
ты в цем это редактировал?

Vlad
18.10.2017
06:45:16
я в RubyMine редактировал... Но жо

Andrey
18.10.2017
06:45:34
в windows?

Vlad
18.10.2017
06:46:00
но до этого все ровно было, единственное отличие, сегодня копа поставил. И возможно при diff что то нажал лишнее...
Черт, да win на работе, на линукс пока не могу тут переключиться, база 1С локальная нужна часто(

Fedor
18.10.2017
06:47:36
правь прям в браузере
все лучше, чем под виндой )

Google

Andrey
18.10.2017
06:49:13
https://github.com/sogrinvlad/ruby_practice/blob/master/iptocountry/iptocountry.rb#L21-L33
я такой код последний раз видел на плюсах, стиль совсем не рубишный =)
этот loop end точно правильно рабоает?
тесты на эту штуку писал?

Di
18.10.2017
06:50:36
К слову, а никто не кодит в связке винда - виртуалка в вагранте? Я помню кто-то говорил что неплохой вариант. Я решил попробовать, но столкнулся с проблемой. Там же код через synced folder доступен в редакторе. И всё б ничего, но этот самый synced folder хранится на хосте, а гость его читает через механизм вагранта и из за этого медленно рельса работает. В два раза дольше рендер идет.

Vlad
18.10.2017
06:51:10
какие тесты, я еще даж не узнал что это) а луп, ну по крайней мере, что мне надо, верно выдает. Думаю, если чет левое подсунуть, полетит к чертям

Andrey
18.10.2017
06:53:39
ну просто конструкции опасные pooly = array.size-1 потом counter = (pooly - poolx)/2 потом pooly -= counter я вот сходу не могу сказать нет ли тут ошибки, может на пограничных случаях упасть или нет.

Fedor
18.10.2017
06:54:47
я правильно понял, что ты реализовал бинарный поиск по массиву численных строк из файла?

Vlad
18.10.2017
06:56:08
ну типо да...
там в файле рядом куча строк, они вот такие(через ; новая строка, экономия места):
1,10,RU; 11,30,EU; 31,100,US
Ввожу число 36, выплевывает US

Fedor
18.10.2017
06:58:45
lines = File.open('test.txt').map do |line|
next if line.strip[0] == '#'
line.to_i
end.flatten
lines.bsearch {|line| line == ip_code}
ага, тоесть там не только числа есть, еще и буквы
тогда тут, как раз отлично пойдут хэши )

Vlad
18.10.2017
07:01:59
Там вообще строка внутри "1","10","ru","Russia"
Что-то типо такого

Fedor
18.10.2017
07:01:59
lines = File.open('test.txt').inject({}) do |res, line|
next if line.strip[0] == '#'
line_array = line.split(',')
res[line[1]] = line[2]
end
lines[ip_code] || 'Not Found!'
ну как бы строку '10' очень легко превратить в число 10 и пользоваться как числом
это просто удобнее
смотри в чем идея, берем файл, читаем его и заполняем хэш:
ip_code => country_code
при этом комменты пропускаются сразу в том же проходе
потом ты просто ищешь в хэше свой ip_code, переданный в программу
а поиск по хэшу имеет сложность O(1)

Vlad
18.10.2017
07:04:31
нене, погоди, у меня ж нет ip_code напрямую в строках

Fedor
18.10.2017
07:04:45
а что там есть?

Vlad
18.10.2017
07:05:24
у меня там "1","10",RU
то есть от 1 до 10 логически, а искать я буду к примеру 5