
Alex
29.05.2017
07:01:24
смешно
я еще раз говорю что я могу подставить туда генератор, алгоритмическая сложность увеличится, для меня, как программиста - не изменится.

Alexander
29.05.2017
07:02:03

Alex
29.05.2017
07:02:09
потому что я не пишу этот боилерплейт. Я говорю что я хочу получить, а не как это сделать.

Google

Alan
29.05.2017
07:03:11
Речь господа об определении алгоритма, а не о синтаксисе

Alex
29.05.2017
07:03:53
Докажите что руби под капотом итерирует массив также как вариант на C.

Alexander
29.05.2017
07:03:58

Alex
29.05.2017
07:04:19
именно

Alan
29.05.2017
07:04:53
Если это сортировка пузырьком, то она алгоритмически одинаковая на любом языке

Alex
29.05.2017
07:05:51
ЕСЛИ

Alexander
29.05.2017
07:05:57

Alex
29.05.2017
07:06:00
вы сделали заявление что под капотом они идентичны

Alan
29.05.2017
07:06:10
Потому что последовательность действий , которые нужно делать с данными, чтобы получить результат одинаковая

Alex
29.05.2017
07:06:17
Вы в этом уверены?
а если я буду итерировать через хитрый пайп к терминалу, как алгоритмическую сложность считать будете?

Google

Alexander
29.05.2017
07:07:06

Alex
29.05.2017
07:07:19
уверен что под капотом используется более эффективная сортировка.

Alexander
29.05.2017
07:08:17

Alex
29.05.2017
07:08:46
да там даже под капотом машинный код различается на порядок

Alan
29.05.2017
07:09:17
Господа я очень люблю руби

Alexander
29.05.2017
07:10:01

Alan
29.05.2017
07:10:04
Но если вообще говорить об алгоритмах, то на си вы его показали а на руби просто один из способов привели-какой алгоритм под капотом там я хз, гляну

Alex
29.05.2017
07:10:44
вы уверены что под капотом я массив итерирую не через линуховые пайпы например? :)
вы так уверено сказали что алгоритм одинаковый.

Alan
29.05.2017
07:11:04

Alex
29.05.2017
07:11:13
о чем и речь.

Alan
29.05.2017
07:11:27
о чем и речь.
Речь о термине алгоритма и последовательности действий над данными

Alex
29.05.2017
07:12:08
пройтись по массиву в любом порядке.
ладно, мне лень спорить, я делаю это изза вредности. Мне скорее проще согласиться.

Alan
29.05.2017
07:13:51

Evgeny
29.05.2017
07:34:15
def create_revocation(html)
@districts.each do |k, v|
@threads << Thread.new do
html.at_css('[id="org_name"]').content = v[:org]
html.at_css('[id="fio_table"]').content = v[:fio]
etc
File.open("/home/evgeny/Рабочий стол/1/#{k}.html", 'w') { |f| f.write(html.to_html) }
end
end
end
Есть вот такой вот код, не могу понять как сделать этот метод потокобезопасным без использование мьютекса. Как видно из кода в html попадают значения просто рандомно, т.к. они выполняются на одной переменной html, но вот если сделаю внутри треда html = html, то все равно потоки изменяют тот html, который передан в метод, а не локальныю html которую должен видеть только текущий поток. У меня получилось только если прямо сделать html = File.open....., тогда все данные сохраняются корректно.

Alexander
29.05.2017
07:42:28

Google

Evgeny
29.05.2017
07:43:25
там внутри есть еще вызовы к апи внешнему, если делать в одном главном потоке делается долго, с потоками в 4 раза быстрее

Alexander
29.05.2017
07:45:22

Evgeny
29.05.2017
07:45:45
Так я же сказал ускорить) Или ты спращиваешь че апи делает?

Alexander
29.05.2017
07:45:57

Evgeny
29.05.2017
07:46:24
Шаблоны генерирую для списка полученного из yml файла

Alexander
29.05.2017
07:47:06
шаблоны куда нужно отдать?

Evgeny
29.05.2017
07:47:37
otziv = File.open('/home/evgeny/Рабочий стол/1.html') { |f| Nokogiri::HTML(f, nil, Encoding::UTF_8.to_s) }
вот его и передаю в метод

Alexander
29.05.2017
07:48:15

Evgeny
29.05.2017
07:48:18
А далее в него все вставляю и сохранаю в итоге

F
29.05.2017
07:48:32

Alexander
29.05.2017
07:48:34

Evgeny
29.05.2017
07:48:39
разный
имя берется из ключа хэша

Alexander
29.05.2017
07:49:56
один HTML проходит разную обработку и сохраняется в разные места?

Evgeny
29.05.2017
07:50:32
ну так да, в одном потоке с этим нет никаких проблем, изменил сохранил, новая итерация

Alexander
29.05.2017
07:50:48
передавай в поток переменную
для избежания модификации исходного объекта можешь dup использовать

Alex
29.05.2017
07:51:54
в руби нет мьютексов т.к GIL

Google

Alex
29.05.2017
07:51:59
может они и есть но они не нужны.

Evgeny
29.05.2017
07:52:20
пробовал dup
А вот передать в thread че то не додумался
сработало
хотя чем не нравится вариант с html = html внутри треда
или даже html.dup

Alexander
29.05.2017
07:53:17

Evgeny
29.05.2017
07:56:42
Видимо свсязано с работой самой vm, о внутренностях которой я не особо знаю. Спс еще раз)
че то я походу рано порадовался, лажа)

Lupsick
29.05.2017
08:06:27
Посоны, вот у меня есть задача: нужно из одного сложного хэша, сделать другие разные хэши (сорт оф форматтер). Как это можно лучше сделать? Формат приходящего хэша я знаю сомнительно, но в процессе это выяснить реально

Admin
ERROR: S client not available

Alexander
29.05.2017
08:10:07

Evgeny
29.05.2017
08:10:28
@threads « Thread.new(html.dup)
Все равно внутри блока все рандомно вписывается

Alexander
29.05.2017
08:16:16

Evgeny
29.05.2017
08:16:47
почему?

Alexander
29.05.2017
08:17:00
потому что это не полный процесс передачи переменной)
как ты передаёшь переменную методу или блоку?

Evgeny
29.05.2017
08:17:44
Трындец я короче, забываю все находу

Alexander
29.05.2017
08:18:02

Google

Evgeny
29.05.2017
08:18:11
да я тыщу раз делал такое
а щас сомтрю как баран
на новые ворота
за Александра)

Oleg
29.05.2017
08:25:18
Привет, кто-нибудь сталкивался с такой штукой?
2.3.1 :126 > 4.01-4.0
=> 0.009999999999999787

No
29.05.2017
08:26:13
Да. Почитай про представление чисел в памяти
Прояснит ситуацию
https://habrahabr.ru/post/112953/
четвертый пункт как раз по твоей проблеме

Alexander
29.05.2017
08:30:58

ToshiDono
29.05.2017
08:31:18
Всем привет!
Читаю "The Cucumber Book", в примере строка 'ruby calc.rb #{@input}' должна исполнится, но у меня не исполняется. Если честно никогда такого не видел. Подскажите пожалуйста, как сделать так, чтобы она выполнялась?

Oleg
29.05.2017
08:31:26
Спасибо, гайс

Evgeny
29.05.2017
08:37:08

ToshiDono
29.05.2017
08:38:22
проблема не в инпуте, а в том, что calc.rb вопринимается как метод, а не как файл который должен быть запущен как будто я в консоли ввожу ruby calc.rb и передаю ему значение из @input

Alex
29.05.2017
08:39:56

Evgeny
29.05.2017
08:40:39
А есть полный пример, или это все что там написано? обычно ruby file в консоли запускают или передают туда аргументы, я так понял у тебя должен выполнится скрипт из шела и вернуть результат я так понимаю
и Cucumber еще кто то пользуется?

ToshiDono
29.05.2017
08:41:43
https://paste2.org/39gDBzV2

Alex
29.05.2017
08:41:53

Evgeny
29.05.2017
08:42:02
Выше спрашивают)
И даже примеры делают

Alexander
29.05.2017
08:43:12