@rubyschool

Страница 585 из 921
Alex
26.03.2018
21:36:43
Ну как бы там все будут делать на ruby

Max
26.03.2018
22:23:00
http://books.goalkicker.com/?lipi=urn%3Ali%3Apage%3Ad_flagship3_feed%3BLMJhOhVGR2iUsb5Nx7wxdQ%3D%3D

Возможно кому то пригодится

Alex
26.03.2018
22:47:33
Возможно кому то пригодится
эта ссылка будет долго живой?

Google
Max
26.03.2018
22:49:01
Ro
27.03.2018
02:20:42
вопрос знатокам

есть пустой хеш, надо значение увеличить на 1

если делать вот так, то получается ошибка:

[1] pry(main)> hh = {} => {} [2] pry(main)> hh[:blabla] += 1 NoMethodError: undefined method `+' for nil:NilClass from (pry):2:in `__pry__'

т.е. надо сначала проинициализировать: hh[:blabla] = 0. Но как проинициализировать и увеличить в одной строке?

причина в том, что ключ :blabla заранее неизвестен. Можно было бы все проинициализировать. Но когда этого нет - неудобно через цикл пропускать. Приходится делать проверку типа:

[1] pry(main)> hh = {} => {} [2] pry(main)> if hh[:blabla] [2] pry(main)* hh[:blabla] += 1 [2] pry(main)* else [2] pry(main)* hh[:blabla] = 1 [2] pry(main)* end => 1

идеи есть, но хочется услышать мнение коллективного разума)

Ro
27.03.2018
02:26:31
а нельзя ли проинициализировать на 1 строке вместо 2?

но да, лучше чем if else

Vlad
27.03.2018
02:28:56
Ну можно вообще просто

Google
Vlad
27.03.2018
02:29:00
hh = Hash.new(0)

Hashes have a default value that is returned when accessing keys that do not exist in the hash. If no default is set nil is used. You can set the default value by sending it as an argument to new

Ro
27.03.2018
02:29:26
вот, да

запомните на всякий случай

на интервью пригодится может когда. Кстати, запомните еще инициализацию двумерного массива: [1] pry(main)> Array.new(5) { Array.new(10, 'X') } => [["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"]]

^ объявляется массив 5 строк на 10 столбцов

прикол в том, что можно легко ошибиться и написать так:

[15] pry(main)> Array.new(5, Array.new(10, 'X')) # НЕПРАВИЛЬНО => [["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"]]

Выглядит одинаково. Почему неправильно продемонстрирую:

[1] pry(main)> matrix = Array.new(5, Array.new(10, 'X')) # НЕПРАВИЛЬНО => [["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "X", "X", "X", "X", "X"]] [2] pry(main)> matrix[3][5] = 'Y' => "Y" [3] pry(main)> matrix => [["X", "X", "X", "X", "X", "Y", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "Y", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "Y", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "Y", "X", "X", "X", "X"], ["X", "X", "X", "X", "X", "Y", "X", "X", "X", "X"]]

т.е. вот этот Array.new(10, 'X') без блока создает 1 объект, который потом всегда используется (и один и тот же) для создания строк.

Александр
27.03.2018
02:35:06
понятно

Ro
27.03.2018
02:35:28
т.е. ссылка одинаковая. Недавно ступил, попался на это. А на интервью времени мало)

Vlad
27.03.2018
02:39:55
Самый странный вопрос в это прекрасное утро решусь задать я. А подскажет кто как бы нормально сохранить 250 миллионов строк в базу, чтобы быстренько все работало, 32 гига оперативки имеется под это дело. Че там по NoSQL для такого? А еще наверное нужны JOIN'ы (в частности INNER JOIN).

Ro
27.03.2018
02:42:31
ну чтобы быстро - не надо индексы создавать

тогда вставка будет работать быстро

но чтение медленно)

а насчет nosql - все зависит от того, как ты будешь использовать данные. большинство nosql не позволяет делать джоины

ну и что такое сохранить - это тоже хороший вопрос

одно дело сохранить 1 раз

Google
Ro
27.03.2018
02:44:38
другое дело много раз иметь возможность сохранять

короче, как в анекдоте про нюанс ?

Vlad
27.03.2018
02:49:06
Та задача немного другая в целом - есть два файла по 4.5Гб с 250 млн строчек... С разницей в 1 млн записей. Вот надо выдрать эту разницу в отдельный файл. Вот голова ломается немного)

Ro
27.03.2018
02:51:29
ну это решается через хеш-таблицу в общем-то

наверное через redis

для каждой записи вычисляешь md5

и увеличиваешь счетчик на 1, если встречается

потом проходишь по всем ключам и выбираешь те, которые попадаются 1 раз, а не 2

у тебя будет всего 250 млн.ключей

небольших

там памяти немного на это надо

хотя если у тебя есть уникальный ключ для каждой таблицы, то можно его юзать. Но я думаю у тебя его нет)

Ro
27.03.2018
02:55:04
иначе было бы проще

Vlad
27.03.2018
02:55:06
Да вот тоже думал типа такого что-то, но меня смущает тот факт что 250 млн это не 1-2 млн) Надо попробовать

Ro
27.03.2018
02:55:42
ну для редиса это в общем-то обычный объем данных

я бы сказал даже небольшой

на недорогой виртуалке это точно можно сделать

Vlad
27.03.2018
03:04:05
Ну у меня дедик выделенный с 32гб, не виртуалка даже, так что потянуть должно думаю

Henry
27.03.2018
04:17:00
(немного флуда) @ro31337 https://twitter.com/sallykuchar/status/978332798275616768?s=09 Офигеть там у вас цены, и главное все скупают)

Ro
27.03.2018
04:28:40
если бы - все скупают... погугли "sfba exodus"

Google
Ro
27.03.2018
04:28:51
тренд установился такой, что все валят

в т.ч. и я)

ну правда не сегодня, но завтра уже таки да

(в переносном смысле)

Henry
27.03.2018
04:37:43
Я такое про Питера Тиля читал, а тут оказывается все намного шире. Действительно много народа валит.

Admin
ERROR: S client not available

Ro
27.03.2018
04:47:00
конторы только от этого страдают

нам-то пофиг, программер может и удаленно работать

вот я тут поеду в пало альто на интервью в понедельник

если они мне оффер дадут, я естественно им вломлю по самый небалуй, ибо дом снять в пало альто очень дорого

а тратить 3 часа в день на дорогу надо ради чего-то

т.е. уже смысла нет особо оффер принимать, даже если он будет достаточно большой

Henry
27.03.2018
04:51:20
про дорогу согласен. Я погонял на электросах из области в москву и это ппц как напрягает) особенно зимой) И времени сжирает уйму

Ro
27.03.2018
06:01:08
кстати да, может сработает простой хеш. Но уверенности в этом нет)

Dmitry
27.03.2018
06:28:25
кстати да, может сработает простой хеш. Но уверенности в этом нет)
А Есть ли какой то общепринятый гем для автозаполнения тестовой базы. Или все ручками это делают?

Alex
27.03.2018
06:28:54
Faker?

Ro
27.03.2018
06:29:09
в rails обычно БД предзаполняется через seed

т.е. изначальная инициализация БД какими-то значениями

Google
Dmitry
27.03.2018
06:29:38
Я тут нашел один, но на моем ноуте после больше 100 000 записей за раз почему то очень долго заполняються, а меньше 100 000 почти моментально.

Ro
27.03.2018
06:29:48
хехе

ну индексы наверное

Dmitry
27.03.2018
06:30:27
Тут скорее хочу сделать тестовую базу с тремя таблицами с 100 млн 10 млн 100 млн записями.

уже подумываю не написать ли самому такой гем.

или велик изобретаю?

Sergey
27.03.2018
06:31:30
Мне бы пригодился

Dmitry
27.03.2018
06:32:41
как раз к появлению 3 рубей управлюсь.

Andrey
27.03.2018
06:34:17
Зачем тебе это? :)

Dmitry
27.03.2018
06:35:35
Хочу большую толстую базу, с голубыми глазами.

Ru
27.03.2018
10:59:18
ого, гитхаб показывает потенциальные уязвимости в коде

Alex
27.03.2018
11:01:45
где?

Ru
27.03.2018
11:03:54


Oleg
27.03.2018
11:38:49
он ими ещё и на почту решил спамить пару недель назад, пока не выбрал оповещение в виде еженедельного дайжеста

Страница 585 из 921