common_disease

26 октября 2015, Saint Petersburg, Russia

# Понедельник 47 твитов

Всем привет! Эту неделю с вами @common_disease. Спасибо за приглашение, теперь и я дорвался.

12:30

Понедельник пройдёт довольно молчаливо, потому что я, представьте себе, работаю!

12:34

Говорят, нужно сперва рассказать о себе, но я скромный, поэтому задавайте вопросы, что ли.

12:35

А пока что хочется передать привет @AlexSerbul, который вёл предыдущий эфир на @backendsecret. Абсолютно феноменальный и святой человек!

12:37
@rubyunderhood где-кем?)
12:49

/@bytecheg Работаю в КРУПНОЙ компании. Пишу БЭКЭНДЫ на руби!

12:50

/@come_on_android @bytecheg да, причём в КОНВЕРТЕ :((

12:53
@rubyunderhood @bytecheg *Зануда модэ он* Работаю в КРУПНОЙ галактике местным БОГОМ. Создаю людишек по подобию дарт вэйдера :)
12:53
@rubyunderhood @bytecheg Платят ДЕНЬГАМИ небось?
12:54
@rubyunderhood @come_on_android @bytecheg ИНКАПСУЛЯЦИЯ ПЕЙЛОАДА
13:08

Да, вот давайте по чесноку: у вас же зарплата в КОНВЕРТЕ?
Можно анонимно проголосовать или/и КАМИНГ АУТ в реплаях.

13:11

Неплохо, неплохо!

14:11

Понедельник ­— дурацкий день, да?

14:16

В понедельник не работает то, что работало в пятницу. В понедельник всегда плохая погода, и люди какие-то особенно угрюмые.

14:16

Предлагаю игру специально для понедельника:

14:17

Так мы поймем, в какие моменты рубисты обычно начинают прокрастинировать!

14:17
@rubyunderhood это еще надо запустить редактор...

AND WE HAVE A WINNER! twitter.com/Resumeo/status…

14:45
@rubyunderhood у меня нет зарплаты, я контрактор. Контракты белые.
14:46

/@listochkin связанной с этим бумажной работой сам занимаешься?

14:46

Если что, в игру можно играть неоднократно. В конце концов, прокрастинация же на этом не заканчивается.

14:48
@rubyunderhood есть бухгалтер на контракте + у контрагентов часто обкатанная процедура.
14:50

/@listochkin солидно!

14:51
@rubyunderhood так мы поймем, кто из рубистов как относится к NDA :D
15:38

/@shuvalov_anton всего одна строчка же, да и можно замазать супер-бизнес-секретные слова из APPLICATION VOCABULARY

15:41

внезапно! pic.twitter.com/N4tw8ANyI6

15:44

/@sc_raptor кстати, а чего не идиоматичный yield?

15:46

/@POS_troi вот это да! ты это, ты там случайно не man in the middle для https мутишь?

15:51
@rubyunderhood Не, всего-то надоело ручками сертификаты админить, вот решил себе внутрисетевой CA сервер на рельсах запилить :)
15:56
@rubyunderhood Упёрся в то что не могу достичь согласия с самим собой - чего в базе хранить а чего не нужно :)
15:56

/@POS_troi а не боишься такие вещи велосипедить? секьюрити же, все дела

16:05
@rubyunderhood @listochkin если ты про налоговую, то там и работы то не много. Пол часа мучений с нерабочим софтом налоговиков и готово :)
16:35
@rubyunderhood Поэтому и думаю чего в базе хранить а чего нет, а так не боюсь, чего там боятся то. Авторизация по сертификату, ssh в отрубе.

Хэй, рубисты-архитекторы-сеньоры, помогите @POS_troi что хранить в базе, а что нет! twitter.com/POS_troi/statu…

16:37
@rubyunderhood binding.pry
18:53

Спасибо вам за ваши скриншоты, это очень помогло мне сконцентрироваться на работе и поменьше отвлекаться на этот проклятый твиттер.

19:57

Раз уж мы тут все такие рубисты и любим Японию, то вот вам сцена из FLCL с милыми The Pillows на саундтреке youtube.com/watch?v=0ni4jP… :3

20:10
Monday brought to you by the letters: ^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C
22:49
Как у Вас дела вообще ? Тяжеловато приходится ? Или ничего?
23:23

как у вас дела-то вообще, рубисты?

23:24
@rubyunderhood Маликов тоже на руби пишет? Или ты у него в гостях был? :) Тортик на ночь вредно для фигуры :D
23:28

/@bytecheg нет, Дмитрий Маликов пишет на Haskell! github.com/dmalikov

23:30

# Вторник 80 твитов

@artemeff @rubyunderhood @bytecheg его вообще в пример всем нам надо ставить :(
0:40
@artemeff @rubyunderhood @bytecheg
> just kidding, I'm not really an actor

Дмитрий Маликов - Future!

0:58

Добрый день!

16:03

Если ещё не слышали, в новом руби добавили новый синтаксис: safe navigation operator. bugs.ruby-lang.org/issues/11537

16:04

Реализован он не "как у всех": .? вместо привычного ?. который можно встретить в CoffeeScript, Groovy, C#, Kotlin, Dart.

16:06

Собственно вопрос: нужно ли оно такой ценой? Мне лично такой синтаксис совсем не нравится.

16:06

Первый поинт: очень легко перепутать с ?., а потом сиди ищи ошибку.

16:10

Лучше бы было немного пожертвовать удобством, но сделать что-то более предсказуемое. А то это очень сильно намекает на Perl в плохом смысле.

16:11

Второе: в простых кейсах достаточно обычного &&, а в сложных — надо упрощать. Длинные цепочки с .? это говнокод и антипаттерн, имхо.

16:13

Вам нравится писать длинные выражения с .try(...) ? Мне вот совсем нет.

16:14
@rubyunderhood надуманная проблема, мне кажется
16:16

/@killthekitten почему? легко опечататься даже прожженному рубисту, который даже не писал на других языках.

16:16

/@killthekitten и если раньше такая опечатка была бы синтаксической ошибкой, то сейчас это валидный руби.

16:16
@rubyunderhood выбрал динамический язык – сам дурак :)
16:35
@rubyunderhood я к тому, что не стоит выдумывать проблемы раньше времени
16:36

/@killthekitten тоже верно. может надо просто ПОПРОБОВАТЬ и понравится

16:36
@rubyunderhood похоже на @ в php, но в целом try сам не люблю и пытаюсь просто писать проверки на все, зато если падает видно где
16:36
@rubyunderhood @killthekitten @whitequark а чего вы так грустно? столько новых возможностей пострелять себе в ноги - это же круто!
16:44
@rubyunderhood а мне - очень нравится! Годно и прагматично
17:58
@rubyunderhood я смотрел - и как раз вопрос к тебе - какой бы ты сам предложил синтаксис, если эти не по душе
18:07

/@svenyurgensson я свою позицию уже высказал — лучше не делать никакой.

18:08

/@svenyurgensson но если уж на то пошло, то лучше было бы как-то обыграть &&.

18:09
@rubyunderhood то есть, не развивать язык? Не впечатляет.
18:10

/@svenyurgensson тут ЛОЖНАЯ ДИХОТОМИЯ на самом деле.

18:10

/@svenyurgensson && в Ruby — это аналог existential operator из других языков (? или ??). соответственно, лучше было бы как-то обыграть его.

18:11

/@svenyurgensson ну то есть да, языку надо развиваться, но это же не единственная возможность.

18:12
@rubyunderhood вообще-то его прямое значение "и" "ии". Нет никакой логической связи с existential ну совсем. В отличии от ? "может…?"
18:14

/@svenyurgensson && в Ruby — это не логические оператор. true && 'something' == 'something'. логический — это &

18:15

/@svenyurgensson ок, я запарил немного. || — это аналог экзистенциального оператора (?? в C#, ? в CoffeeScript и т.д.).

18:17
@rubyunderhood я все же не согласен - как по мне .? все же и эстетически и логически вернее. Но посмотрим, что Матц добавит, чего уж там
18:21

/@svenyurgensson так уже добавили, в том-то и дело.

18:22

TL;DR:
`?.` выглядит логично в языках, где есть просто `?`
иначе выглядит инородно

18:23
Котаны, а встречал кто адекватный GEM для реализации Text-based консольного интерфейса - На подобии MC и т.п. ? @rubyunderhood
19:43

/@POS_troi слыхал однажды про gem 'vedeu'.

19:49

/@POS_troi сам конечно только ncurses юзал

19:50
@rubyunderhood предлагаю компромисс: ".¿".

Можно грепнуть по исходникам рубей и заменить все ".?" на ".¿" или написать препроцессор.

19:51
@rubyunderhood how_many.¿fucks.given?
19:51
@killthekitten @rubyunderhood в целях популяризации испанского
19:53
@altmind @Dziman казнить за .try(:)
19:56
@Shiroginne @altmind а как красиво пробираться через возможные нулы?
19:56
@Dziman @altmind NullObject pattern, декораторы, презенторы, сервис объекты всё такое
19:56
@mr_The @rubyunderhood сейчас можно использовать только в конце имени метода и ок. А вот "foo.?bar" выглядит как-то нелогично.
19:58

TL;DR: на самом деле все проблемы решила бы монада Maybe.

20:00
@Shiroginne @rubyunderhood @Dziman @altmind микросервис! для unless .nil?
20:02
@Dziman @rubyunderhood @Shiroginne @altmind в книжке Confident Ruby есть всякие стратегии борьбы с нуллами, может пригодится
20:04
@rubyunderhood в джаве ее сделали, теперь нужно везде отлавливать null, Optional.of(null) и Optional.empty()
20:05
@rubyunderhood не нужно, никакой ценой, еще один слой костыледелания
20:09
@rubyunderhood а почему никто про Деметру не вспоминает? devblog.avdi.org/2011/07/05/dem…
20:13

/@muthafaka да, собственно в этой статье всё, и можно дальше про .? не спорить.

20:18
@rubyunderhood ну ясно конечно что .? это полу-мера по сравнению с Maybe, но ожидать Maybe в раби имхо бесполезно.

За слово "раби" нужно отрывать бошки! извнте twitter.com/as_Crazy/statu…

22:22
@Shiroginne @rubyunderhood @Dziman @altmind да-да, навернем 10 слоёв архитектуры через которую потом не продраться, лишь бы не .?
22:23
@Shiroginne @rubyunderhood @Dziman @altmind не обманывал себя, от того что ты размазал эти проверки по 10 слоям, отладка стала только хуже
22:23
@as_Crazy @rubyunderhood @Dziman @altmind лишь бы не говнокодить и не ловить лулзы на отладке :)
22:23

/@as_Crazy @Shiroginne каждый из вас прав по-своему!

22:24

Раз уж заговорили о синтаксисе, и раз уж @fxposter спрашивал на прошлой неделе, чего в руби не хватает, то как вам ГИГИЕНИЧНЫЕ МАКРОСЫ?

22:27

Давайте подумаем, что мешает их наконец-то сделать и как вы видите реализацию?

22:28

Some background: в руби всякая магия типа has_many тоже называется "макросами".

22:29
@rubyunderhood с тремя капельками норм
22:30
@rubyunderhood а если серьёзно, то ЧТО ЭТО ВООБЩЕ?
22:30

/@ptico это откуда-то из лиспов. гугли define-syntax / defmacro (даже в эликсире есть!).

22:34

/@ptico если вкратце, то независимость от контекста. ну вообще, возможность написать не гигиенично есть только в C, разве что.

22:38
@rubyunderhood я в смысле что их делает гигиеничными?
22:38

в общем, пью чай с бальзамом "поморье" и читаю вот этот тред news.ycombinator.com/item?id=9692499 про метапрограммирование и макросы

22:53
@rubyunderhood @fxposter в руби макросы нахуй не нужны
22:55
Кошка покакала, и я её больше не люблю
22:59
@rubyunderhood @fxposter макросы нужны 1) в языках с малой выразительностью (см. СИ), 2) в лиспах редко,где простая композиция ф-ий не катит
23:03
@rubyunderhood @fxposter ко второму случаю относятся красивые dsl на лиспах, в руби для этого другие механизмы есть
23:05
А что, если рассматривать оператор .? не как новый в том виде, как он есть, а в виде question prefix? Т.е. user. ?name. @rubyunderhood
23:29

/@suxxes не очень понял твою интуицию. можешь поподробнее объяснить?

23:29
@anton_davydov @rubyunderhood Которые по-умолчанию вели бы себя как call_on_nil, и могли переопределяться.
23:36

/@suxxes @anton_davydov
> Которые по-умолчанию...
Неочивидная магия начинается уже здесь.

23:37

Вы вообще любите Ruby или лишь бы свалить на очередной эликсир?

23:45
@rubyunderhood Люблю, но Эликсир будоражит.
23:48

Может быть есть и более удачно спроектированные языки, но именно руби started the ball rolling! Не забывайте свои корни!

23:52

Чёрт, я превращаюсь в Сербула.

23:52
@rubyunderhood люблю и хочу видеть другие языки/идеи в руби
23:53

Stay true, stay rebel!

23:54

Есть вещи на порядок выше.

23:55

# Среда 114 твитов

Вот ещё один спорный и интересный feature proposal в ruby: volatile bugs.ruby-lang.org/issues/11539

0:01

Кто-нибудь может с ходу ответить, что такое volatile в других языках?

0:02
В Java для volatile гарантируется, что запис. значение видимо другим потокам и happens-before последующим чтениям twitter.com/rubyunderhood/…
0:05

Хорошая программа на Ruby как книга Юкио Мисимы: там красота и смерть.

0:15
@rubyunderhood очень люблю, если валить, то только как дополнительно, кложу вот и хочу, скобки норм
1:10
@rubyunderhood например, memory models для java 5, с++11 и, если я не ошибаюсь, c11 делали практически одни и те же люди
1:10

/@fxposter memory model — прерогатива стандарта языка?

1:11

/@fxposter ah, я понял. речь о многопоточной memory model.

1:15
@rubyunderhood если разные реализации имеют разные модели памяти - то программы на них будут вести себя тоже по-разному
1:16
@rubyunderhood это базис для построения модели памяти (как JMM или как той, которую юзают CPU) для многопоточных програм
1:17

/@lisovskyvlad так только хочешь или юзаешь? и в каких задачах поможет?

1:19
@rubyunderhood однопоточная, как правило, очевидная - что записал, то и прочтешь :) все остальные на фоне этой выглядят не очень :-D
1:34
@rubyunderhood сейчас у MRI и JRuby разные модели. В итоге все что связано с многопоточностью приходится адаптировать под обе по-своему
1:34
@rubyunderhood но основная проблема - у MRI нет спеки для MM. И остаётся полагаться только на то как MRI устроена.
1:34

/@fxposter потому и сделан gem 'concurrent-ruby' чтоб НЕ ПАРИТЬСЯ

1:37

Кстати, насчёт спеков. У кого-нибудь есть ссылка на источник, где бы ясно объяснялось, что на самом деле случилось с RubySpec?

1:42

А то с одной стороны имеем вот это: rubini.us/2014/12/31/mat…
С другой стороны в официальном форке ведётся работа: github.com/ruby/rubyspec

1:46

/@sudodoki я как-то спросил коллег, продолжили ли бы они писать на руби, если бы кое-кто самый главный вдруг совершил каминг аут.

2:05

/@sudodoki я был шокирован тем, что услышал. без комментариев, но советую попробовать самому со своими коллегами.

2:06
@rubyunderhood красота снаружи, а смерть за красотой?

А что о красоте? Beauty is in the eye of the beholder. twitter.com/anton_davydov/…

2:07
@rubyunderhood ruby вообще отличный для своих задач
9:44

/@rainrb вот только не понимаю, какие-такие "свои" задачи? ruby — general purpose язык.

9:45
@rainrb @rubyunderhood лучше ruby для веб-приложений пока ничего не придумали, осталось не говнякать с кодом и головняка будет меньше.
9:53

/@mpak999 @rainrb так вот Ruby, в отличие от Erlang, не проектировался под конкретную сферу применения.

9:54

/@mpak999 @rainrb и вот почему так получилось? dhh увлёкся ruby и увлёк всех за собой?

9:55
@rubyunderhood @rainrb ну потому не плохо с вебом справляется Rails, c devops chef и puppet, а еще приятно скрапить веб и ботов накрутки :)
9:56

Кстати, а чем вы СКРЕЙПИТЕ ВЕБ на руби в промышленных и не очень масштабах?

9:57
@rubyunderhood конечно свалить на elixir, а лучше на Go. Ruby уже всё, к сожалению: фреймворки за вебом не поспевают, язык тоже
10:29

/@Shiroginne да что такого особенного случилось с вебом, что теперь его нужно писать на Go?

10:31
@Shiroginne @rubyunderhood до миллионов запросов ещё нужно дорасти. А для сокетов есть Erlang.
12:27
@rubyunderhood Ручками) http.rb + sidekiq
12:27
@rubyunderhood люблю, если сваливать, то на Crystal
12:44

В общем, двоемыслие какое-то. Все любят Ruby, но свалить хотят!

12:45
@Shiroginne @rubyunderhood у руби отличная экосистема для начала нового проекта.
12:46
@nick_jastix @rubyunderhood у elixir тоже, оставим в стороне erlang
12:46

Ну что, рубисты, поговорим про HTTP. Сейчас HTTP-протокол используется далеко не только для того, чтобы отдавать сайты в браузер.

12:49

Тут и API для одностраничных приложений, и микросервисы, и вещи типа Couchbase и Elastic.

12:50

А кому-то повезло меньше, и он пишет ВЕБ-СКРЕЙПЕРЫ

12:51

Поэтому назрел вопрос: какие http-клиенты в Ruby сакс, а какие маст хэв?

12:52

И тут не прокатит ваше лояльное "зависит от задачи". Я всегда яростно выпиливаю стандартный Net::HTTP из проектов, потому что нечего тут!

12:53

Отдельное место в аду уготовано любителям HTTParty, который суть просто обёртка над Net::HTTP.

12:56
@rubyunderhood а что тебе в Net::HTTP не нравится?
12:59

/@anton_davydov поддержка персистентных соединений в Net::HTTP практически не юзабельная (нужно оборачиваться в блок).

13:01

Я приведу пример: ElasticSearch elastic.co/guide/en/elast…

13:04

"When possible, consider using HTTP keep alive when connecting for better performance"

13:04

Далее, Elasticsearch::Transport использует Faraday для HTTP. Сам Faraday — лишь обертка над разными клиентами.

13:05

И если ты не ставил дополнительных гемов, то Faraday будет использовать Net::HTTP, который не будет уметь в персист.соединения (keep-alive).

13:05

Поддержка Keep-Alive — пожалуй, самая главная причина, почему стоит всегда принимать во внимание, какой HTTP-клиент используется.

13:07

Я очень часто использую gem 'httpclient'. Он хороший, умеет персист.соединения, написан на чистом Ruby.

13:08

Но буду рад послушать, чем хорош http.rb

13:09
@rubyunderhood у Avdi Grimm недавно был масштабный опрос среди читателей блога и подведение итогов по этому вопросу devblog.avdi.org/2015/10/16/res…
13:09

/@suxxes насколько я успел оценить, если нужен биндинг над libcurl, то самое адекватное это typhoeus

13:10

/@suxxes я не советую юзать patron и curb в кач-ве обертки над libcurl, потому что они реализованы как C-extensions.

13:24

/@suxxes Например, я фиксил в patron следующие грустные вещи: github.com/toland/patron/…, github.com/toland/patron/…

13:24

/@suxxes но сколько еще таких магических сегфолтов встретишь? а в Typhoeus по идее такого быть не должно, потому что он реализован на FFI.

13:26
@rubyunderhood @suxxes чем плохи C extensions?
13:27

/@Fodoj @suxxes не плохи, но если есть возможность их не использовать (а тут она есть), то лучше не использовать.

13:28
@rubyunderhood т.е. других аргументов нет?
13:30

/@Drakula2k ну есть ещё фичи типа pipelining, но аргумент с keep-alive считаю достаточно весомым.

13:31
@rubyunderhood @suxxes я аргументов против не услышал все ещё (
13:33

/@Fodoj @suxxes например, выбирая из двух зол: NoMethodError и Segmentation Fault — что ты выберешь?

13:34
@rubyunderhood @suxxes то есть раз на чистом руби, то проблем быть не может? :)
13:35

/@Fodoj @suxxes по крайней мере не будет сегфолтов, которые вообще весь процесс убивают

13:35
@rubyunderhood @suxxes в какой ситуации мне придётся выбирать? Будет либо одно, либо другое
13:36

/@Fodoj @suxxes ну чего ты занудствуешь. понятно же, что речь о рисках, а не о конкретных багах.

13:37

/@Fodoj @suxxes если есть возможность исключить целый класс проблем, то почему нет?

13:37
@rubyunderhood igvita.com/2011/10/04/opt… почему ты решил что net/http его не поддерживает
13:46
/@anton_davydov поддержка персистентных соединений в Net::HTTP практически не юзабельная (нужно оборачиваться в блок).

/@fxposter twitter.com/rubyunderhood/…

13:46

/@fxposter тем самым, невозможно просто иметь объект с *открытым* соединением. Можно только подключиться, выполнить N запросов и отключиться

13:47
@rubyunderhood Перепробовал почти все популярные http либы и http.rb самая удобная в плане API, скорости и отсутствия багов
13:47
@rubyunderhood Правла для rest API она слишком низкоуровневая.
13:48
@rubyunderhood net/http неудобно, curb/typhoeus segfaultится с sidekiq (в curl multi), Excon оч неудобное API на основе AS::Notifications
13:52

/@fxposter гуд, я был не совсем прав. тогда тебе вопрос: почему start/finish не используется здесь github.com/lostisland/far… и можно ли?

13:53
@rubyunderhood Faraday неплох для каждодневных задач, но stream не поддерживает
13:54

/@fxposter фишка в том, что даже без блока API неудобный. другие-то http-клиенты *просто работают*.

13:56
@rubyunderhood ну фарадей не ориентирован на коннекшены, скорее на полные запросы. там можно кешировать эти http-обьекты…
13:56

/@fxposter как это не ориентирован? именно на них и ориентирован. инстанс фарадея == коннекшн.

13:57
@rubyunderhood если тебе нужен keep-alive - то тебе нужно апи ориентированное на tcp-коннекшены, а не на http-запросы.
13:57

/@fxposter нет, мне нужен самый простой API, а коннекты/реконнекты должен брать на себя http-клиент.

13:58

Посмотрите на Gun github.com/ninenines/gun — вот таким и должен быть хороший http-клиент: easy to use, always connected.

14:00
@rubyunderhood это чревато, потому что один коннекшен может залипнуть :)
14:00

/@fxposter хороший http-клиент должен также уметь таймауты

14:00
@rubyunderhood HTTP only
allows you to send an idempotent request over a keep-alive connection,
because if the connection closes…
14:27
@rubyunderhood … while you're sending, you have to re-emit
the request without knowing if it was processed or not.
14:27

/@fxposter разве это проблема keep alive? это в принципе проблема идемпотентности запросов, которую ты на прошлой неделе поднимал.

14:27
@killthekitten @anton_davydov они передают cvv и все такое в открытом виде отелю. Некоторые отели их печатают и кладут на ресепшн деск.

Не о Ruby, но это тоже важно :( twitter.com/kirshatrov/sta…

16:57

Сегодня коллега поинтересовался, зачем я использовал в одном месте preload, ведь есть же универсальный includes.

18:20

Не знаю как вам, но мне нравится в тех местах, где не нужна универсальность, явно декларировать свои намерения. Так больше опредёленности.

18:21

Если я хочу джойны, то я хочу джойны. Если я хочу preload с несколькими запросами, то я использую preload

18:22

А вы как?

18:22
@rubyunderhood “Ты, я , секс, сейчас!” — ты в баре так же общаешься с девушкой? :)
18:23

/@suxxes извини, но не могу придумать столь же смешной ответ :)

18:24

/@suxxes но точно могу сказать, что я в бары хожу с другой целью

18:25
@suxxes @rubyunderhood лучше так, чем потом гадать от ~~кода~~ девушки, что она себе в голову придумала
18:25

Объясните мне, как это происходит gist.github.com/marshall-lee/8…

19:09

Ещё немножко магии: gist.github.com/marshall-lee/2…

19:25
@anton_davydov @rubyunderhood if you mutate a hash key, you have to rehash the hash. Otherwise lookups will fail.
19:26

Thanks to @tenderlove for responding but calling him was a cheat! :D

19:30

Ну а про эту оптимизацию точно сами слышали gist.github.com/marshall-lee/2…

19:40
@tenderlove it would be interesting for you to spend one week with russian ruby community? :)
@rubyunderhood
19:46

Да, хватит уже тут придурков типа меня, зовите Аарона!

19:48
@rubyunderhood ты же история. + preload еще хорош тем, что он не конфликтует с joins. (includes развернется в LEFT OUTER JOIN)
20:27

я купил огромный кусок кимчи в пятерочке, и съел его дома. теперь я горю покруче, чем @AlexSerbul на работе! не делайте так.

21:56

/@backendsecret @89__bo @mr_mig_by раньше слушал хэви-метал, но теперь дорос до сеньора и слушаешь ивенты!

22:18
@rubyunderhood @backendsecret @89__bo @mr_mig_by КГБ отправляет мне ивенты через телефонную розетку
22:24
Кстати, кимчи классная штука, сам беру регулярно :-) twitter.com/rubyunderhood/…
23:18

/@AlexSerbul я бы не смог регулярно им питаться, это надо быть очень крутым!

23:21

# Четверг 201 твит

Сегодня поговорим об инструментах. Предлагаю всем РАСЧЕХЛИТЬ свой девелоперский стэк и похвастаться в реплаях!

13:36

Начнём не с IDE и терминалов, а с клавиатур. У нас на работе только ОДИН принёс свою клавиатуру (и это не я), а остальные сидят на казённых.

13:37

Но я считаю, что клавиатура — очень важная штука. От неё зависят продуктивность и настроение. В клавиатурах сокрыто счастье.

13:37

Сам хочу наконец-то приобрести добрую механическую клавиатуру. У кого-нибудь есть что посоветовать?

13:37

Ах да, у всех же макбуки, так что выбирать не приходится.

13:37

Мне не очень нравится клавиатура на макбуках, но вот отдельная Apple Keyboard ВПОЛНЕ — работал на такой полгода.

13:38
@rubyunderhood Когда-то была Microsoft Natural, кайфовая клавиатура :)
13:38

/@rainrb я как-то пробовал посидеть за подобной клавиатурой (с разделителем на левую и правую части) — у меня ничего не вышло :(

13:39
@rubyunderhood надо Microsoft Natural, подобные не факт что так же хороши) Ну и время вхождения — пара дней.
13:51
@rubyunderhood пускаю слюни на Ultimate Hacking Keyboard, но в россию стремно заказывать ибо почта россии и стоит она достаточно много
13:52

/@anton_davydov если это действительно та клавиатура, которую ты хочешь, то ты должен рискнуть! и не так плоха почта россии, на самом деле.

13:53
@rubyunderhood мне нравится microsoft.com/hardware/ru-ru… работаю уже несколько месяцев, крутая вещь!
13:53
@rubyunderhood ultimate конечно )
13:53
@rubyunderhood я подумываю носить с собой клаву, так как на макбуке неудобно и непривычно
13:54

/@Bugagazavr ты недавно на макбуке?

13:55
@rubyunderhood кстати, что думаешь о happy hacking keyboard?
13:57

/@anton_davydov смотрится КРУТО, но главная проблема выбора клавиатуры в интернете — нельзя потрогать :(

13:57
@rubyunderhood thinkpad x250 shop.lenovo.com/us/en/laptops/… Клавиатура (внезапно) в 6 раз лучше чем у макбуков.
13:58

/@Fodoj потому что в 6 раз толще? :)

14:00
@rubyunderhood нет, толще где-то на пару миллиметров (тут тристы тысяч портов), но при этом гораздо легче и компактнее.
14:07
@rubyunderhood кстати, чего все так переживают за клавиатуры? Кто-то действительно пишет тысячи строк кода в день? Иначе - зачем?
15:00

/@mr_The я ждал этого вопроса. я бы даже перевёл его в другую плоскость: причём тут вообще Ruby?

15:00

/@mr_The зачем мы выбрали Ruby? помимо того, что есть Rails, за дружбу с которым тебе готовы платить деньги, есть ещё одна вещь: счастье.

15:00

/@mr_The Ruby is optimized for happiness. можно называть это просто "удобством", но Ruby открывает глаза на такие вещи.

15:00

/@mr_The и дальше хочется применить этот подход во всём: не только язык может быть удобным — об этом я сегодня и хочу поговорить.

15:01

/@mr_The да и клавиатура вовсе не только для кодинга. есть ещё терминал, есть хоткеи, есть мессенджеры.

15:01
@rubyunderhood кстати, я вот в маке забиндил сонтрол на капслок - и переслал ломать пальцы об хоткеии. Очень советую.
15:04
@rubyunderhood [почти] все клавиатуры удобные. Но к каждой нужно привыкать. Давайте еще поговорим про кресла. Кто на чем сидит?
15:05

/@mr_The от некоторых клавиатур болят руки. и вообще, "лучшее-враг хорошего" — сомнительный аргумент. механические клавиатуры рулят

15:06
@rubyunderhood коллега доволен Matias Ergo Pro matias.ca/ergopro/pc/ . А я пока остановился на MS Sculpt, но это не механическая :(
15:06
@mr_The @rubyunderhood У меня Малькольм.
15:07
@rubyunderhood механические клавиатуры - тоже сомнительный агрумент. Громко кликают, тяжело нажимаются, пальцы устают.
15:08
@rubyunderhood Хотя, у меня только одна такая была, и та старая. Может в новых все получше, но как-то не трогал их в живую.
15:08

/@suxxes @mr_The да, кресло — тоже важная часть девелоперского стэка. you've got a point!

15:09
@mr_The @rubyunderhood кресло не нужно)) alexfedoseev.com/api/uploads/im… а клава очень крутая на новых макбуках
15:10

/@alexfedoseev @mr_The а что там изменилось в новых макбуках?

15:10
@alexfedoseev @rubyunderhood ага, я как-то был в одном стартапе - приходилось кодить сидя на полу возле тумбочки, ибо не было мест больше.
15:11

/@mr_The @alexfedoseev такое рабочее место не совместимо с программированием на Ruby!

15:11
@rubyunderhood @alexfedoseev кстати да, многие рубисты раньше писали на пхп, но теперь никто в этом не признается. Вот.
15:22
@rubyunderhood @mr_The больше площадь клавиши, меньше ход. меня оно больше ретины впечатлило. apple.com/macbook/design/
15:22

На самом деле у меня никакой особенной клавиатуры пока что нет, но я могу рассказать об остальном своем СТЭКЕ.

15:24

Эмулятор терминала: в линуксе Terminator, в маке iTerm2, потому что активно пользуюсь табами и сплитами. Вещи типа guake не люблю.

15:25

$SHELL=/bin/zsh
Использую oh-my-zsh, но сейчас нахожусь в процессе слезания с него.

15:26

oh-my-zsh хорош для вдохновения и "на первое время", но лучше в итоге сделать свой хороший конфиг.

15:27

например, меня очень взбесило как в oh-my-zsh недавно перефигачили все алиасы для git. лучше всегда написать свои.

15:28
@rubyunderhood @mr_The купил вот новую себе с подсветкой, руки болят :( сижу на старой изогнутой клаве от MS
15:28

/@Resumeo да, это всё отлично для того, чтобы начать. просто потом понимаешь, что тебе не нужен чужой комбайн. лучше собирать самому.

15:29
@rubyunderhood не знал про guake, но последние года четыре у меня выпадает iterm таким же образом <3
15:30
@rubyunderhood меня вполне устраивает, уже года 3 использую. правлю пару конфигов, добавляю пару алиасов и все
15:32

$EDITOR=/usr/bin/vim
Использую из терминала.

15:34

плагины в Vim ставлю по старинке через Vundle

15:34

перейти на Emacs кстати так и не получилось :(

15:35

мне вообще кажется, что емаксеры врут, что их редактор хорош для touch typing. вот vim да, а emacs - нет

15:36

хотя экосистема в emacs объективно круче, стоит это признать

15:36
@rubyunderhood
> мне вообще кажется, что емаксеры врут, что их редактор хорош
15:37

вообще если хотите понять, крутой перед вами вимер или нет, спросите его на какую клавишу забинден <Leader>

15:37

каждый раз, когда мне становится скучно, я пытаюсь добавить какую-нибудь новую вещь в свой vim-воркфлоу.

15:40

это либо какая-то неизвестная мне ещё комбинация команд, либо новый плагин, которые бы увеличили мою продуктивность.

15:40

какая последняя штука увеличила вашу продуктивность хотя бы на 10%? плагин в vim, алиас в шелле, что угодно.

15:41

одно из последних крутых новшеств у меня — vim-easymotion.

15:43

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

15:43

но вы обязательно останетесь довольны!

15:44
@rubyunderhood это очень спорное утверждение, у меня на “,” и что? я теперь крутой вимер или лох? )
15:44

/@damirca у меня тоже на ','
"лох" тут тот, кто вообще <Leader> ни на что не меняет :)

15:45
@rubyunderhood вброшу: emacs - единый Бог и vim - его пророк на земле. (лично я предпочитаю, конечно, Бога)
15:45
@rubyunderhood Ag, FZF, vim-slime
15:45

Да, я тоже пользуюсь Ag (the_silver_searcher). И из вима, и из консоли. Без него тоже никуда.

15:46
@rubyunderhood у меня свои алиасы для git, gush, gad, gdc, и так далее
15:46

Ещё одна важная штука у меня — vim-rspec. Очень удобно вызывать RSpec (и даже отдельные тесты с привязкой к строчке) прямо из Vim.

15:48

Один забавный хоткей, который я недавно сам себе выдумал:
bindkey -M viins -s '^[l' 'la --color | less\n'

15:49

ctrlp не использую. у меня Command-T, работающий с фейсбуковским watchman

15:51

ну и конечно же NERDTree и NERDCommenter

15:53
@lisovskyvlad @rubyunderhood ag быстр как черт + ag-vim огонь плагин
15:56
@rubyunderhood @damirca а если на пробеле <Leader>, то кто перед тобой? :D
15:57

/@anton_davydov @damirca передо мной человек, которого я не могу понять!

15:57

Для интеграции с Git у меня vim-signify и nerdtree-git-plugin

16:02

Шрифт в терминале — уже много лет Liberation Mono

16:03
@rubyunderhood не знаю, что такое touch typing, но я своего работника за месяц на емакс пересадил влегкую, до сих пор благодарит
16:03
@rubyunderhood Pomodoro / SelfControl
16:04
@rubyunderhood @damirca лол, почему? на пробеле очень удобно держать Leader имхо. Не промахнешься во всяком случае :D
16:06

а что никто за Sublime / Atom не топит?

16:07
@rubyunderhood Texmate 2, Terminal — вот и весь стек
16:08
@rubyunderhood macbook pro, iterm, fishshell+omf, sublime text, ну и все, по сути.
16:13

Ну и в завершение было бы логично устроить обмен скриншотами ваших десктопов. Кто начнёт?

16:28

Сам я выкладывать не буду, но вместо меня вот вам: Screenshots from developers & Unix people (2002)
anders.unix.se/2015/10/28/scr…

16:29
@rubyunderhood пользуюсь daskeyboard ultimate где-то полгода – отличная и очень приятная штука, советую
16:29
Не выдержала душа поэта… Закрыл Atom, открыл RubyMine.
16:30
@rubyunderhood а зачем топить? Пользоваться надо ;) sublime text 3 - основной редактор до релиза text mate 2. Atom много ОЗУ жрет
16:30
@rubyunderhood MacBook Pro, iterm, zsh, sublime (попытки перейти на vim)
16:34
@rubyunderhood закрыл Twitter и slack. Серьёзно, ковбойство с клавиатурой не добавляет продуктивности так, как добавляет “не отвлекаться”
16:34
@dcromster я пользуюсь только VI - для правки конфигов :) @anton_davydov @rubyunderhood @damirca
16:59
@rubyunderhood code keyboard tenkeyless на браунах
17:41
@rubyunderhood Ubuntu, tmux, vim
17:41
@rubyunderhood zsh и RubyMine
18:00

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

да, это 2015 год весь в этом

18:03

А я помню 2008 год, волшебное было время! Правда я тогда ещё не писал на Ruby, но зато у меня была басуха.

18:11

Но однажды я попытался понять, чем был 2008-й для рубистов, и git blame active_support/ordered_hash.rb: github.com/rails/rails/bl…

18:11

На примере этого файла я предлагаю оценить всё волшебство этого времени. 2008-й был прекрасен.

18:11

Олдскульная магия из 2006: core_ext/kernel/daemonizing.rb github.com/rails/rails/bl…

18:25

Когда не было всяких ruby-debug и byebug, отладчик был вкручен прямо в рельсы!

github.com/rails/rails/bl…
github.com/rails/rails/bl…

18:34

О, насчёт Ag. Однажды обсуждали Pt (the_platinum_searcher) с @Stammru и @anton_davydov. Это Ag, переписанный на Go, который еще быстрее!

18:47

И я тогда предложил переписать на Haskell, за что @anton_davydov назвал меня поехавшим.

18:48

Тем не менее я люблю затянувшиеся шутки, и я действительно стал переписывать Ag на Haskell, и вот что есть сейчас: github.com/marshall-lee/t…

18:49
@rubyunderhood зачем? тогда же уже был require 'debug'
18:50

Мой the_iron_searcher не призван соревноваться с другими по скорости, но тем не менее мне любопытно, насколько быстрым он может быть.

18:51

Я плохо знаю Haskell, и этот проект — отличный шанс попрактиковаться.

18:52

Там и монады, и конкарренси — в общем, велком писать вместе со мной. Я могу пооткрывать Issues, работы там много, и я знаю, что нужно делать

18:53
@rubyunderhood ну да, в 2002 году он уже существовал
github.com/ruby/ruby/blob…
18:54

За что я люблю Haskell: часто бывает так, что чем ИДИОМАТИЧНЕЕ пишешь, тем быстрее работает. В Ruby всё с точностью до наоборот.

19:00
@rubyunderhood в чем смысл если на Haskell ещё лет 20 никто ничего писать не будет (в мелко промышленных масштабах)?
19:05

/@Shiroginne в чём смысл направлять абсолютно все усилия на то, чтоб ЛИШЬ БЫ СХАНТИЛИ?

19:05

/@Shiroginne во-вторых, насчёт 20 лет не согласен. посмотрим.

19:05
@rubyunderhood не ради СХАНТИЛИ, а ради человечества. Есть 100500 нерешенных/плохо решённых задач на реальных технологиях
19:21

/@Shiroginne а вот если в контексте человечества, то не важно — 20 лет или даже 40.

19:22

/@Shiroginne а если совсем честно, то ты решаешь задачи не человечества, а бизнеса, который тебе платит деньги.

19:26
@rubyunderhood тебя не коробит то, что основные двигатели Haskell выходцы из Microsoft и они его двигают в enterprise?
19:27

/@Shiroginne не путай Microsoft и Microsoft Research. это ОЧЕНЬ разные вещи.

19:27
@rubyunderhood бизнес получает деньги за какой-то сервис, который улучшает жизнь человечества … Или ухудшает :)
19:29

/@Shiroginne вот-вот. я признаю, что не знаю, что нужно человечеству. это сложный философский вопрос, а я не философ, и ты тоже.

19:30

/@Shiroginne абсолютно ВСЕ вещи, которые "изменили мир" (типа социальных сетей) не были ПРОДУМАНЫ.

19:30

/@Shiroginne никто не просчитывал, как они повлияют на человечество. кто знает, может быть всё это нас уничтожит.

19:31

/@Shiroginne в ОДНОКЛАССНИКАХ работают отличнейшие джависты habrahabr.ru/company/odnokl…, но с моей колокольни эта соц.сеть — адовое пекло.

19:33
@rubyunderhood разные, да. Но почитай что они пишут “хотим Haskell в интерпрайз”
19:34

/@Shiroginne как что-то плохое?

19:34
@rubyunderhood ладно, там не философия основный предмет, но курс был! Интерпрайз ужасное старое говно, потому что стабильность
19:37

/@Shiroginne Microsoft не "владеет" Haskell (в отличие от C#). да и то, сейчас MS с дотнетом переползли в опенсорс (на гитхаб!).

19:38

/@Shiroginne а люди из F# вообще вон просят не путать их с Visual F# blogs.msdn.com/b/dsyme/archiv…

19:40
А вот стало интересно про rebar3 и опенсорс либы. Так вот, использовать пакеты с hex.pm или же брать их с гита, для обратной совместимости?
20:45

/@artemeff пфф, ну и проблемы у ПЕРЕБЕЖЧИКОВ!

20:46

Кстати, @anton_davydov, я предлагаю чтобы этот аккаунт фолловил всех, кто раньше были авторами здесь. Как тебе идея?

20:49
@rubyunderhood дай им волю, до сих пор бы писали на кобол, потому что уже написано и работает
20:53

Тут чел в метро читает Маркеса, а вы что последнее прочитали из художественного? pic.twitter.com/KOl7kfxjgp

21:16
@rubyunderhood стыдно - Марсианин :(
21:22

/@Shiroginne а из того, что не стыдно?

21:22
@rubyunderhood из последнего: "скотный двор" и разные небольшие рассказы Азимова.
21:23
@rubyunderhood Курцио Малапарте "Капут" / "Шкура", сейчас войну и мир читаю
21:23
@rubyunderhood Neal Stephenson "Seveneves". Стивенсон уже не тот :( Да еще и 880 страниц.
21:26
@rubyunderhood в последнее время что-то тяжело дочитывать худ.лит. Гибсона пытался "Страна Призраков" но не цепляет никак
21:26

/@Shiroginne да у Гибсона в принципе тяжёлый слог

21:26
@rubyunderhood сейчас Франц Кафка - Замок и нравится пока очень
21:26

Ну а я всё ещё перечитываю всю Дюну.

21:36
@Shiroginne @rubyunderhood согласен, мнемоник,нейромант очень крутые книги.Из того же могу посоветовать Стивенсона (wikiwand.com/en/Snow_Crash)
21:38
@anton_davydov @rubyunderhood у Стивенсона очень крутой - Криптономикон, и еще лучше - Алмазный Век, или букварь для благородных девиц
21:38
@Shiroginne @rubyunderhood криптонамикон хорош, но концовка мне не очень понравилась, как и некоторые сюжетные линии :(
21:38
@rubyunderhood на Кинга подсел в последнее время. Разбавляю им проф. литературу.
21:40
Тиндер – найдётся все @rubyunderhood pic.twitter.com/frYKfjyc1d
21:54

/@G3D @anton_davydov @killthekitten @ksunkk вместо имени цитата из Mujuice, НУ ВСЁ ЯСНО

22:24
@killthekitten @ksunkk @rubyunderhood @G3D он сам баловался этим в 2007, гарантирую :D
22:36

/@anton_davydov @killthekitten @ksunkk @G3D песня называется 1997, если что :/

22:37

/@anton_davydov @killthekitten @ksunkk @G3D лучше уж это, чем Буерак и группа Ploho.

22:39
@gruz0 @rubyunderhood Жюль Верн "20 тыс. строк кода вглубь" :)
22:42
@rubyunderhood, The Catcher in the Rye
22:42

/@gruz0 круто, в оригинале читал?

22:43
@rubyunderhood, второй подход будет в оригинале, а пока перевод, т.к. планировал "быстро посмотреть" и увлёкся книгой :-D
22:45

/@gruz0 рекомендую остальное творчество Сэлинджера тоже, там много прекрасного. "Выше стропила, плотники!", вот это всё.

22:50
@rubyunderhood Будешь смеяться, но 100 лет одиночества. :)
22:50

/@suxxes !!!

22:50

/@suxxes а я помню как я читал "Сто лет одиночества". это был где-то 2010 год, и я тогда дауншифтнулся в работу сторожем.

22:52

/@suxxes сторожил какую-то судоремонтную хрень, дело было на окраине города и у реки.

22:53

/@suxxes я тогда таскал с собой ноут тоже. и прочитал я тогда книг больше, чем за всю остальную жизнь (и по программированию тоже).

22:54
@rubyunderhood @gruz0 на мой вкус малая проза у Сэлинджера сильнее, особенно условный цикл о Глассах.
22:54
@rubyunderhood Я 100 лет прочитал году в 2005. С тех пор до конца я не причитал ни одной книги.
22:55
@anton_davydov @ksunkk @rubyunderhood @G3D давайте узнаем у ведущего, как он угадал мелодию с трёх слов
22:57

ок, пришло время объясниться и расчехлить свой ПЛЕЙЛИСТ

22:58

сейчас я слушаю каждый день "The Antlers", и конечно же в основном самый важный альбом Hospice.

22:59

непосредственно код пишу под Yumi Zouma последнюю неделю.

23:01

по дороге домой слушаю Planning for Burial, который последний раз слушал в 2012

23:02

а Mujuice? ну да, слушал когда-то. с ним связаны определённые люди, и определённые воспоминания

23:03

но переслушивать не хочется в отличие от чего-то другого

23:03

вообще черствый я стал какой-то и музыка уже не так прёт ((

23:04

забавный факт, но последний концерт, на котором я был, это была группа "время срать"

23:05

давайте не будем больше про музыку, у меня ужасный вкус :D

23:06
@rubyunderhood Red Mars, Echopraxia, Волчий зал
23:10
@rubyunderhood У меня то-же, поэтому AC/DC, Metallica, Rammstein, Бах, Бетховен, Моцарт :)
23:14

/@POS_troi круто, а книжки не читаешь?

23:14
@rubyunderhood пишешь ли на рубях в не рельс? Утилиты и т.д. к примеру.
Что дяля работы с БД нынче камильфо - activrecord или datamaper
23:16

/@POS_troi моя текущая работа примерно на 90% вне рельс. так сложилось, что именно рельсовой частью занимаются другие люди.

23:17

/@POS_troi ну и на самом деле, даже когда ты пишешь sidekiq-воркер, то ты уже вне рельс.

23:19

/@POS_troi в том числе часто приходится делать на Sidekiq и всякие временные задачи. хорошо, если их можно эффективно разбить на части

23:22
@rubyunderhood @POS_troi в смысле ? воркер же внутри приложения рельсового
23:22

/@Resumeo @POS_troi неважно, в какой папке/репозитории располагается файл с кодом :) рельсы – это то, что в контексте http-запроса.

23:23

/@POS_troi ещё делал проект на celluloid (и celluloid-io), связанный с gps-трекерами.

23:26

очень горжусь кстати этой gps-штукой, потому что на ней много говна из celluloid повылезало — всякие утечки, баги и т.п.

23:28

Тут @POS_troi спрашивает: ActiveRecord или что-то другое?

23:34

Я не хочу брать на себя грех советовать что-либо одно.

23:34

Мне нравится Sequel, я быстро его выучил, а потом мне и вовсе удавалось в нём всякое безумное ковбойство, которое в AR невозможно.

23:38

(другое дело, что это возможно поддерживать тяжелее, чем идиоматмчный код на AR, который "знают все")

23:39

Чёрт, вы меня поймали. Перед этим эфиром я дал себе слово, что рельсосрачей тут не будет, а ActiveRecord это часть рельс

23:46

Я не считаю AR говном и антипаттерном, но я считаю, что он мог бы быть лучше. И также считаю, что он не всегда применим.

23:53
@rubyunderhood Вот по этому и холивар в сети AR vs DataMapper :)
23:55

/@POS_troi мне это не интересно. а интересно попробовать всё самому

23:56
@rubyunderhood Ну AR вроде все попробовали в рельсах, я вот сижу в не рельсу кручу всю эту жуть. Честно, чистым скуль запросом проще :)
23:59

# Пятница 162 твита

/@POS_troi не нужна композабельность, не нужны ассоциации и прочие плюшки? тут конечно AR утрачивает свою привлекательность.

0:00

Ещё я не знаю, что такое rom-rb, так что вообще не в теме, о чём говорил @inem

0:01

Да короче, если хорошо знаешь AR, то можно всегда им пользоваться по дефолту, если задача явно не требует чего-то другого.

0:05

Потому что в большинстве случаев AR хорошо справляется.

0:06
@rubyunderhood @inem это datamapper, просто его Петр переписал с нуля
0:29
@artemeff @rubyunderhood @inem И в `rom-sql` там под капотом небезызвестный `Sequel`. API не должен особо изумлять
0:29

/@artemeff @inem если чувак понял, что AR - плохо, то не факт ещё, что он понял как надо ;)

0:33

лол, вспомнил: Aphex Twin теперь ассоциируется исключительно с СИБИРЬЮ и шевелящимися картинками в паблике "русская пустота".

0:38
@gaar4ica @rubyunderhood @anton_davydov чтобы в пятницу по пьяни писать бывшим. Очевидно же
0:56
@anton_davydov @rubyunderhood @POS_troi sequel, Sequel::Model на крайний случай
1:07

/@ptico @anton_davydov @POS_troi Sequel для людей с определённым характером, а AR могут все :)

1:07
@rubyunderhood @anton_davydov @POS_troi честно говоря, людей которые не смогли Sequel::Model я на работу не возьму
1:14

/@ptico @anton_davydov @POS_troi ксенофоб!

1:15
@rubyunderhood можно сказать аэрофоб
1:17

С чего всё началось, зачем нам такие штуки как AR? 1) легко строить запросы, всё композабельно 2) нам рассказали о защите от sql-инъекций

1:23

3) какие-то сомнительные "ооп-ценности", возможно

1:24

тут важно понимать, что всякие ORM — это далеко не единственный подход для решения этих задач.

1:25

часто просто кажется, что нужен-то был просто тудрбный инструмент для построения запросов.

1:26

а чтобы было удобно строить запросы, вовсе не обязательно подниматься в абстракциях выше, чем просто dsl для построения запросов.

1:28
@ptico @rubyunderhood а что такого сложного в нем, что его сложно изучить?
1:29

/@anton_davydov @ptico ничего сложного, но нет книжек (книги же все по рельсам), и даже просто сетевых туториалов.

1:30

/@anton_davydov @ptico документация в исходниках не всегда понятная и не всегда полная.

1:30

/@anton_davydov @ptico если нет проблем пройти через это, то Sequel ты полюбишь

1:31
@rubyunderhood @ptico так я помню, что там хорошая дока была
1:31

/@anton_davydov @ptico дока отличная, но трабл в том, что сам Sequel ещё лучше!

1:32
@rubyunderhood документация там ок. where и прочая те же почти
1:32
@rubyunderhood Просто если малейший выход из зоны комфорта выбивают из колеи, то ты не программер, а кусок дерьма
1:34

/@ptico да я согласен, но по Sequel по-прежнему не хватает книги. она просто должна быть.

1:36
@rubyunderhood @anton_davydov @ptico куда больше(зачеркнуто) ещё-то?
sequel.jeremyevans.net/documentation.…
1:41

/@nepalez @anton_davydov @ptico прочти весь остальной тред. просто сам sequel круче своей документации.

1:41

/@nepalez @anton_davydov @ptico и это не покрывает best practices. вот об этом вряд ли что-то найдёшь.

1:42
@rubyunderhood @nepalez @anton_davydov вот, кстати, да. Есть куча трюков и крутых плагинов, про которые нигде не пишут
1:44
@rubyunderhood @nepalez @anton_davydov в общем, нужно убить свою лень и завести блог
1:44
@ptico @rubyunderhood @anton_davydov книгу, кроме Джереми, кто напишет? Как в ROM: код читали все, а кроме Петра его вряд ли кто понимает
1:47
@rubyunderhood Ну кто знает, може ещё что-то появилось да я пропустил :)
Целлюлоза вообще няша git.sysalex.com/snippets/9, удобная :)
8:08
@POS_troi @rubyunderhood make_host_list какой-то хардкор... :-)
8:08

/@POS_troi мне там многое не нравится. открой регу в твоём гитлабе, и мы устроим ревью.

8:09

/@POS_troi например, я бы хотел посканить более широкие диапазоны IP. твой сканер легко масштабируется?

8:14

/@POS_troi ты в курсе, что это вообще можно было переписать так, чтобы системных тредов осталось всего 1-2?

8:16
@rubyunderhood предлагаю обсуди\ть тему карьеры в #Ruby
11:24
@poltavajs @rubyunderhood а какая карьера может быть в руби ?
11:24

Ну да, что значит карьера в Ruby?

11:24

/@ipronix @poltavajs действительно, никакой карьеры на этом идиотском языке быть не может!

11:25

Да всё нормально с карьерой, просто нюанс в том, что это всегда веб или около. В ракетах руби не будет.

11:27

Я бы вопрос иначе поставил: что делать разработчику, если он не хочет расти в руководителя?

11:30

Возраст же. У меня на глазах не взяли отличного дядьку за 40, просто потому что тимлиду 30.

11:32
@rubyunderhood зачем вообще нужна карьера? Надо создавать продукты, заработать денег и все, а там уже не важно каким ЯП это делать будешь.
11:35
@rubyunderhood просто е-башить код? :)
11:35
@rubyunderhood все просто: заниматься разработкой, не расти в руководителя! :)
11:35

Окей, а расти-то куда?

11:36
@rubyunderhood как попасть в хороший проект по Руби?
11:39

/@poltavajs любой проект, в который ты попал, это именно то, чего ты заслуживаешь в данный момент.

11:40

/@poltavajs а что такое хорошие или плохие проекты я не знаю

11:41
@rubyunderhood @rubyunderhood как бы смешно это не звучало - а Go уже там :D часть софта в SpaceX на нем
11:43

/@Shiroginne да, слышал. ещё слышал, что ракеты падают)

11:44
@rubyunderhood в CTO / Data science
11:44
@rubyunderhood к счастью, это не из-за го ;)
11:44
@rubyunderhood @poltavajs кодь і не вір рекрутерам) коли маєш пропозицію йти в проект, шукай і питайся чуваків з команди
11:45
@rubyunderhood карьера в Руби очень рискованная. Потому что отруби только рельсы, если они выйдут из тренда. То что останется?
11:47

/@lunat1que я не хотел этого говорить, но любителям рельсов всё равно хватит легаси ещё лет на 20

11:49
@rubyunderhood карьера в Ruby == карьера в basecamp :troll:
11:49
Очень грустно становится, когда все говорят, что Ruby == Rails, и если рельса вдруг станет все, то руби пойдет за ней :(
11:50
Я вот почти уже год на рельсе не писал
11:50
@rubyunderhood в другой язык, подозреваю, что то для бигдаты например
11:56
@ungzd @rubyunderhood как один из вариантов, но я бы выбрал бы язык, на котором уже давно есть всякие mlp штуки
12:10

/@Bugagazavr @ungzd mlp — это my little pony?

12:11
@rubyunderhood @poltavajs язык то приятный. но уж очень на веб заточенный. что б что-то достойное на руби сделать,надо на яве,си,го пописать
12:55

Как считаете, должен ли Ruby быть первым языком программирования?

12:56
@rubyunderhood а первый язык влияет на что-то ?
13:34

/@ipronix хороший вопрос. не знаю, но изучение первого языка это как правило не только изучение языка — это ещё и обучение программированию

13:36
@rubyunderhood я бы вроде и не против, но руби выходит сильно сложный для новичков. Это уже не раз проверенно опытным путем.
13:36

Давайте так: есть у меня один знакомый, который прошел собеседование и его взяли на работу. Ruby и Rails он до этого толком не знал.

13:37

Что бы вы ему посоветовали?

13:37
@rubyunderhood а он же до этого писал на чем-то? Если да - то наверняка разберется.
13:38

/@mr_The да, писал

13:39

Это я просто к тому, что выучить рельсы не велика задача. Вон человек быстро сориентировался и выполнил тестовое задание.

13:44

Это я к тому, что вредно причислять себя к "рубистам" или "рельсовикам". Это зона комфорта такая.

13:45
@rubyunderhood @lisovskyvlad т.е. этот знакомый редиска, он украл, чье-то рабочее место!
13:45

/@mpak999 @lisovskyvlad да, ведь мог бы вместо него быть НАСТОЯЩИЙ рубист!

13:46

Но это и не значит, что нужно менять языки как перчатки — это тоже путь вникуда. После 3-го или 4-го языка уже ничего нового.

13:49

Хотя также аспект в том, что я, например, хорошо знаю Ruby и ориентируюсь в экосистеме, и это отлично работает на меня.

13:51

Можно остановиться и на Ruby.

13:53

Вместо того, чтобы воевать с очередным build tool и dependency hell других экосистем, лучше заняться чем-то более содержательным.

13:54
@rubyunderhood Выучить основы Rails не сложно. А вот разобраться в том, как там все работает и пилить сложные проекты -- это другой момент.
13:56
@rubyunderhood ну не, смотри, ассемблер, си, джава, хаскель, эрланг, лисп и пролог - разные языки и из каждого что-то новое можно узнать
13:57

/@anton_davydov ок, после 5-го или 6-го :)

13:57

/@scaint ключевое слово — "сложные проекты", которые везде сложные. и с руби, и без руби. и с рельсами, и без рельсов.

13:57

/@scaint я потому, например, и не понял нытья @inem и railshurts.com, что мол им рельсы не помогают делать сложные проекты.

13:58
.@rubyunderhood проблема не в том что рельсы не помогают
проблема в том на рельсе можно быстро добраться до сложности. быстрее чем поумнеешь
14:13

/@suxxes нет, вот как выглядит трушный рубист! pic.twitter.com/1rU5hKfasI

14:14

/@inem тоже соглашусь, но в том, чтобы быстро добраться до сложности, я вижу скорее хорошее, чем плохое.

14:16
@inem @rubyunderhood А то что глупый неопытный джуниор садится за большой и сложный проект — это нормально?
14:23
Люди из @rubyunderhood вы знаете что делать :) twitter.com/awscloud/statu…
16:08
@rubyunderhood рабочее место RoR программиста. pic.twitter.com/2HkbofnUiy
16:08
@jsunderhood @mr_mig_by я правильно понимаю, что тестировщики — это инженеры? Дизайнеры — инженеры? Верстальщики — инженеры?
16:19

/@twenty @jsunderhood @mr_mig_by я правильно понимаю, что без звания "инженер" программист чувствует себя каким-то неполноценным?

16:19
не знаю насчет полноценности, но разница в зарплате может быть точно) @rubyunderhood @twenty @mr_mig_by
16:21

/@jsunderhood я наблюдал в совковых конторах, что должность "инженер-программист" дают всем, у кого ВО, а "программист" тем, кто без ВО.

16:23
@rubyunderhood @twenty @jsunderhood @mr_mig_by инженером является любой собравший из говна и палок по мануалу из "очумелых ручек" скворечник
17:07

/@Chudesnov @twenty @jsunderhood @mr_mig_by значит я уже к 13 годам был сеньор-инженером!

17:08
@rubyunderhood @twenty @jsunderhood @mr_mig_by требуй $100000 в год -- заслужил!
17:20

Жаркая выдалась неделька! Тут и эфир этот, а ещё увольнение с работы.

17:38
@rubyunderhood за что уволили? из-за твиттера? :D
17:41

/@anton_davydov типа того. за несоответствие КОРПОРАТИВНОЙ КУЛЬТУРЕ

17:43
@rubyunderhood ты что, в тельняхе, в офисе, пьяный пел бг и обливал начальство водкой?
17:46

/@anton_davydov да шучу я, лол, по собственному желанию конечно же.

17:47
@rubyunderhood жаль :(
я уже начал на ютубе видео искать, как ты в тельняхе пьяный поешь :(
17:48

/@anton_davydov то, что я живу в Санкт-Петербурге, не значит что я ношу тельняху :(

17:48
@rubyunderhood @anton_davydov может быть ты не в Петербурге живешь? Там все носят тельняшки, я видел :(
18:01

/@Shiroginne @anton_davydov просто я не коренной!

18:01

Ничего плохого не могу сказать про своего работодателя, но я не рос, а мне это важно.
Если не растёте, значит в жизни нужно что-то менять.

18:03
@rainrb @zhulikgleb @rubyunderhood первым должен быть Basic или Pascal, потом C, а потом уже что-нить в духе Питон, Руби, Смолток, Swift
18:29

/@mpak999 @rainrb @zhulikgleb ну что за совок! первым должны быть Scheme и Haskell!

18:30
Если я когда-нибудь буду выступать с докладом в Петербурге, надену тельняшку и возьму водку. Напомните мне, если забуду
18:33

/@Shiroginne я схожу на это посмотреть, даже если доклад про Go!

18:33
@rubyunderhood @mpak999 @rainrb @zhulikgleb Дракон, Рапира, Лого, Школьный алгоритмический язык
18:37

Это вообще миф, что новичков лучше учить Паскалю и Бейсику.

18:38

Это всё придумала постсоветская система образования, а у вас всех просто СТОКГОЛЬМСКИЙ СИНДРОМ

18:38
Ура!!! Наконец-то приехал чай, который я заказывал… год назад. :)
18:40

/@suxxes что за чай? выдохся уже скорее всего

18:40

Сегодня пятница же, ну! pic.twitter.com/qYmanEGppr

18:42

Во чо нашёл у себя: скрипт для скачивания оригинальных GIF с 9gag, А то там теперь всё конвертится в webm gist.github.com/marshall-lee/3…

18:49
@rubyunderhood нужно ли обязательно менять работодателя или можно расти с любым?
19:06

/@stas_spiridonov обязательно что-то менять в жизни, если не растёшь. а как — it's up to you.

19:07

Короче, вы тут оставайтесь выяснять кто пидор, а я двигаю в REDRUM. Если вы из Питера, то не приходите туда, а то и так тесно!

19:39
Из-за своей безответственности @anton_davydov опаздывает на 20 минут. Никогда не пишите свой интерпретатор lisp за час до важной встречи ಠ_ಠ
19:42
@rubyunderhood а у вас много тусовок рубишных/не js-ых в Питере осталось?
19:49

/@anton_davydov я только SPRUG знаю, но ни разу на встречах не был.

19:50

/@anton_davydov вроде бы это всё проводится в формате Piter United, если не ошибаюсь.

20:10
@rubyunderhood @anton_davydov околоруби моб Piter United. Stay true, stay meta!
20:21
@rubyunderhood js убьёт руби, го убьёт питон. Как страшно жить))
20:22

/@rainrb один только руби не хочет никого убивать, потому что рубисты и так счастливы!!!

20:24

MAKE CODE NOT WAR

20:25
@rubyunderhood Какие книги, курсы или другое посоветуете новичку?
20:29

/@pinyslutty любая книга, которая увлечёт.

20:30

/@pinyslutty поначалу читать всё подряд, а потом уже сам поймёшь как отделять зерна от плевел.

20:32

Меня бесполезно спрашивать о книжках, я начинал с C и ассемблера и было это лет 13 назад. Другие книжки тогда были.

20:41

Ну что, я начинаю бар-хоппинг! pic.twitter.com/1KDeZOETML

21:04
@rubyunderhood почему с таких прекрасных языков, тебя занесло в этот бездуховный ruby? Ведь ясно что нужно было в с++ и геймдев
21:10

/@Shiroginne не хотел геймдев. и вообще я довольно панковскими вещами занимался.

21:21

/@Shiroginne например, писал дебагер для linux (usermode, конечно же)

21:22

/@Shiroginne или как-то пропатчил ntoskrnl, чтобы вместо синего фона BSOD рисовался bmp с НЕО ИЗ МАТРИЦЫ.

21:24
@rubyunderhood тогда вообще странно как ты дошёл до веба где вся работа заключается в сборке библиотек :/
21:42

/@Shiroginne я не считаю так. я не считаю, что лоу левел круче. в вебе тоже есть челендж.

21:44

/@Shiroginne веб разный. vk и ok тоже веб. сраные crm для предприятия из 100 человек - тоже веб.

21:45
@rubyunderhood много раз приходилось писать vk?
21:49

/@Shiroginne ни разу, но истина где-то посередине. есть челендж, просто в другом.

21:51

/@Shiroginne с моими прежними скиллами дорога разве что к дяде жене или к данилову вирусным аналитиком. я не хочу себе такой судьбы.

21:52

/@Shiroginne просто меня изначально вхождение в ПРОФЕССИЮ не заботило нисколько, меня просто несло.

21:54
@rubyunderhood унесло как то далеко от ремесла :)
22:01

/@Shiroginne а не было желания за него хвататься

22:02

/@anton_davydov @pinyslutty @Shiroginne а у меня в REDRUM тыквенное, которое варится раз в год!

22:21

В этот раз пивное эстетство продлилось недолго, и я уже в другом месте pic.twitter.com/jgJbXJmkMC

22:42

я уже в 3-ем месте и не хочу продолжать. ща допью и домой!

23:35

# Суббота 31 твит

@rubyunderhood i.imgur.com/fSMeEC7.jpg этот гусь тебя не поддерживает
0:47

я уже дома. у @anton_davydov будет похмелье, а у меня нет.

0:49
@rubyunderhood там аргументация типа: нужно научить алгоритмическому мышлению, вот кто будет на питоне сортировку писать? вызовут sort и все
0:51

/@VitalySalnikov реализованный в питоне sort — это кстати тема для целой дипломной работы.

0:51

/@VitalySalnikov да сомнительный аргумент, даже в стд.бибилиотеке C/C++ есть сортировка и бинарный поиск.

0:54

/@VitalySalnikov даже олимпиадники часто не пишут бин.поиск сами, потому что с реализацией lower_bound в C++ бессмысленно тягаться.

0:56
@rubyunderhood учить детей на информатике физзбаззу, объяснять про люки, рассказывать что крокодил более длинный, чем зеленый
1:00
@rubyunderhood @anton_davydov он уже в корпоративном Телеграме отрывается и шумит :-D
1:12

Какой сегодня день? Правильно, СУБКОТА, она же CATURDAY.

12:45

Я начну с фото своего кота недельной давности, свежие будут попозже. pic.twitter.com/iXCUUbok70

12:46

И сегодня я узнал, что NEKO ATSUME перевели на английский!

12:48
Так. Срочно. Японский апп с котиками наконец вышел на английском.
play.google.com/store/apps/det…
itunes.apple.com/us/app/nekoats… pic.twitter.com/6ZVraW0iBT
12:48

Где ваши коты?

13:00

Вот ещё наш кот в космосе. pic.twitter.com/4COJkJVz2G

13:02
@rubyunderhood это может стать реальностью ponylang.org
13:08

/@Bugagazavr гугли FiM++

13:08

/@Shiroginne моар!

13:32
Goodbye 'X for Y': The Cryptic Ruby Error Is Becoming Friendlier - robb.weblaws.org/2015/10/26/goo…
17:04

Мобильных игр тред. Кто во что?

19:30

Я сейчас конечно же подсел на NEKO ATSUME.

19:31

Ещё люблю всякие головоломки, сейчас вот играю в KenKen.

19:37

Как-то с одним коллегой соревновались по рекордам в 0h h1, и у меня бомбило каждый день, когда он снова выходил на 1-е место.

19:39
@rubyunderhood ни во что. Мобильные игры на стоят времени. Только консоли, только хардкор!
19:46

/@Shiroginne а когда ты на перемене?

19:47
@rubyunderhood а, кстати, можно взять с собой 3ds и пройти Зельду ;)
19:48

# Воскресенье 109 твитов

Время селфи pic.twitter.com/EQBC7idBKC
0:13
Challenge accepted: create #lisp interpreter on #ruby 🎉 pic.twitter.com/7FtTuhDgFa
0:13

/@anton_davydov интероп с остальным руби умеет?

0:13
@rubyunderhood на ночь глядя вспомнил про отличный роман - "Младший брат" от Кори Доктороу. Рекомендую ru.wikipedia.org/wiki/%D0%9C%D0…
0:23
"How long it took to convert our team from Rails to Phoenix - One week” by @bcardarella dockyard.com/blog/2015/10/2… /cc @rubyunderhood
0:24

/@listochkin да очередная ДЖИНСА про эликсир. одни эмоции, и обязательно надо рельсам себя противопоставить — без этого же не состоятельно.

0:25

я не против elixir, но меня бесят статьи про него, написанные будто бы пиарщиками, а не разработчиками.

0:30
@rubyunderhood Ну, его противопоставляют рельсам по определенным причинам, и совершенно не ради подъебнуть вторую.
0:34

/@suxxes да, но почему они все какие-то дебильно-восторженные? в них же ничего интересного, эмоции одни.

0:34
@rubyunderhood У людей счастье, а ты просто вчера не допил. :)
0:38
@suxxes @rubyunderhood и тот самый гусь все еще не доволен!
0:38
@suxxes @rubyunderhood а вот нифига, макросы добавляют сложности и нормально так
0:40

/@artemeff @suxxes да, я читал исходники Ecto — это было довольно тяжело.

0:41

/@artemeff @suxxes а когда что-то надо было в исходниках gproc, то очень легко код читался.

0:42
@suxxes @rubyunderhood т.е. в эрланге код можно читать сверху-вниз, в эликсире – нет
0:42

/@artemeff в чем разница?

1:59

Elixir As Viewed By An Erlanger
jerrydantonio.com/elixir-as-view…

2:12

Erlang, Elixir, and Hygenic Macros
jerrydantonio.com/elixir-and-erl…

2:12
@rubyunderhood он в статье пишет что в эрланге макросы простые, типа как в си. Но не написал что есть parse_transform :)
12:23
@rubyunderhood и вот с помощью него можно делать макросы как в эликсире, но сложнее для разработчика, что очень хорошо
12:26
@rubyunderhood вот, например, как конпелируется lager gist.github.com/artemeff/d938f…
12:26

/@artemeff я с тобой очень согласен.

12:27
@listochkin @rubyunderhood @bcardarella в чем профит перехода?
13:28

/@bytecheg @listochkin @bcardarella почувствовать себя снова молодым!

13:28
Реакт, реакт — и в продакшн.
13:32
I could never rediscover that @joeerl vs This Is Dog gif I came across once, so I just made my own. pic.twitter.com/k68Xb0O7TM
13:33

Кто на HighLoad++ завтра?

14:24
@rubyunderhood @listochkin @bcardarella просто по бенчмаркам моим личным на 50% феникс быстрее, но это не на порядки же
15:00
@rubyunderhood @listochkin @bcardarella и то я тестил не очень честно, феникс из постгреса выбирал данные, а рельсы из sqlite
15:00

/@bytecheg @listochkin @bcardarella а с кэшированием всё и вовсе сравняется.

15:01

Помнится, был я год назад на русской руби-конференции, и там помимо докладов был КРУГЛЫЙ СТОЛ на тему, где хранить бизнес-логику в рельсах.

16:10

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

16:10

В результате получилось ни о чём — никто так и не сказал как надо. Типа "нууу, it depends".

16:11

К чему я это всё? Всё-таки какие-то общие рекомендации есть. Например, сейчас любят говорить о сервис-объектах (service object).

16:11

Вот как я себе представляю СЕРВИС-ОБЪЕКТ исходя из прочитанного в интернетах:

16:14

1. У сервис-объекта есть конструктор, куда можно ЗАИНЖЕКТИТЬ ЗАВИСИМОСТИ.

16:15

2. У сервис-объекта только один публичный метод, который принято называть call.

16:15

3. Класс сервис-объекта принято называть ГЛАГОЛОМ.

16:16

Типичный "рефакторинг" с сервис-объектом: cut&paste большого куска кода из контроллера в метод call нового класса.

16:17

Очень быстро. Дольше название для класса придумывать будешь.

16:18
@rubyunderhood если я правильно помню, там был отличный комментарий, что её надо хранить в текстовых файлах
16:18

Всё хорошо в сервис-объектах кроме названия. Оно какое-то отталкивающее и не раскрывает сути.

16:20

В языках типа Scheme сервис-объектом была бы просто ФУНКЦИЯ, возможно с letrec-биндингом вместо ПРИВАТНЫХ МЕТОДОВ.

16:22

Если всё это всего лишь функция, то какого чёрта?

16:25
@zhulikgleb @rubyunderhood ну это же ООП. С помощью классов мы описываем предметную область. С помощью методов – действия в ней.
16:29
@zhulikgleb @rubyunderhood глагол – действие*
16:29

Мне @killthekitten недавно прислал: bparanj.blogspot.ru/2014/06/why-us… Why using Interactor Gem is a Very Bad Idea.

16:30

Собственно Interactor — вариация на тему сервис-объектов. Из сомнительного паттерна умудрились сделать целый гем!

16:31
@rubyunderhood все так,да.Но в руби ты не сделаешь приватные функции в другой функции,как это сделано в схеме.Поэтому велосипед с классами
16:32

The Keywords 'class' and 'new' Are Overrated: jerrydantonio.com/the-keywords-c…

16:35

А это про то, что нечего мудрить с сервис-объектами, когда не надо.

16:36

Дело ведь также и в том, что сервис-объекты как бы призывают забыть, что они имеют свой allocation cost.

16:38
@rubyunderhood ничего не принято называть глаголом
16:39

Называть классы глаголами — вообще плохая идея? А методы? Когда можно, а когда нельзя?

16:40

По-моему, тут слишком сложная система правил выстраивается вообще на пустом месте.

16:41
@rubyunderhood вопрос, в том стоит ли плодить на самые незначительные действия сервис объекты - я считаю, что нет
16:44
@rubyunderhood @killthekitten APPLY HEXAGONAL ARCHITECTURE PRINCIPLES RELIGIOUSLY pic.twitter.com/qyAumveXSx
16:57

/@anton_davydov в Ruby тоже есть замыкания!

16:58

/@anton_davydov и вследствие этого какой-то переусложненный scope.

17:00

/@anton_davydov в функциональных языках как правило всё просто: модуль — это один большой letrec.

17:04

/@anton_davydov делается лямбдами на руби точно так же. просто выглядит убого.

17:06
@rubyunderhood нет, я про такие штуки говорил
gist.github.com/davydovanton/e…
17:06
@rubyunderhood знаю в питоне есть похожий аналог
17:10
@rubyunderhood да, делается и да, выглядит очень хреново
17:10
@rubyunderhood 1) это непросто формализовать 2) я предпочитаю думаю о сервис-объектах как о responsibility. 1 класс - 1 ответственность
17:13
@rubyunderhood Item::Create мне не по душе, ImageImporterFromFtpService - нравится больше. Размер ответственности - искусство.
17:13
@rubyunderhood мне больше интересно как доносить до команды,что этот класс существует.И как гарантировать,что не появятся дубликаты сервисов
17:18

/@23ydobemos хороший вопрос!

17:18

/@lisovskyvlad так чем Importer лучше, чем Import?

17:20

/@lisovskyvlad видимо дело ещё в том, что в инглише есть КОНВЕРСИЯ глаголов в существительные.

17:22

/@lisovskyvlad следовательно, тру-англоговорящих не особо должно волновать, глагол или существительное — разница же размыта.

17:23
@rubyunderhood @lisovskyvlad Import – свершившийся факт :)
17:23

/@killthekitten @lisovskyvlad это инфинитив. почему факт свершившийся?

17:24

/@23ydobemos не часть ли это общей проблемы сложных проектов?

17:27
@rubyunderhood @lisovskyvlad имхо лучше ImageImporter как базовый класс, а внутри уже сервисы по типам) Иначе чехарда с названиями.
17:27

/@merqlove @lisovskyvlad чехарда с наследованиями не делает ничего понятнее. наследование — всегда трейд-офф.

17:28
@rubyunderhood @merqlove @lisovskyvlad зачем наследование, ImageImporter::FTP, ImageImporter::SCP имеет место быть такой вариант.
17:39
@rubyunderhood ну это же не значит, что не надо ее решать. Просто для всего остального рельсы дают хоть какую-то структуру
17:39
@ajieks @rubyunderhood @lisovskyvlad +1. Не обязательно наследование.
17:41
@rubyunderhood но тогда сразу вопрос, что делать с сервисами, которые оперируют 2+ моделями
17:51

/@23ydobemos если оперирует одной моделью и ничем кроме, то зачем и сервис?

17:52
@rubyunderhood самое первое, что на ум приходит: группировать по основной доменной модели: все про юзеров идет в User неймспейс
17:52
@rubyunderhood и опять же, как приучить команду сначала искать сервисы, а потом уже лезть в модель. Особенно внутри рельсовой консоли
17:53

/@23ydobemos да, команду хрен к чему приучишь, поэтому надо навернуть МИКРОСЕРВИСОВ.

18:02

/@23ydobemos я не зря сказал, что в сервис-объектах хорошо всё, кроме названия.

18:11

/@23ydobemos сама договорённость о том, что "у нас в проекте есть сервис-объекты" имеет некоторые последствия.

18:12

/@23ydobemos в других языках это просто функции. как уберечься от того, что кто-то напишет такую же функцию? да никак.

18:13

/@23ydobemos документацию поддерживать надо и работать с ней.

18:13
@rubyunderhood я имел в виду объектную зависимость, параметров же может быть больше: т.е любая логика, которую не хочешь держать в модели
18:19

/@23ydobemos проблема из разряда "в каком порядке определить аргументы у функции?".

18:21

/@23ydobemos универсального ответа нет, но обычно тот аргумент, который просится в список первым — как правило ради него всё :)

18:30
Считаю что эту неделю @rubyunderhood должен закончить фотографией в тельняшке с бутылкой водки и котом 😁
19:49
@anton_davydov @rubyunderhood медведь это к москвичам, в Петербурге своя атмосфера :)
20:34
@Shiroginne @rubyunderhood забыл про медведя в ушанке и с балалайкой на заднем плане. А так - да, поддерживаю :)
20:34

Всем большое спасибо, особенно @killthekitten, @artemeff, @anton_davydov, @POS_troi, @suxxes, @rainrb, @ipronix.

21:52

Ох, ребяты, круто было

21:52

Я сейчас подпиваюсь с питерскими, а потом двигаю на ХАЙЛОАД

22:02

Кто хочет тусануть в Москве, пишите @common_disease

22:04

Ребят, всё что я говорил — провокация и ложь.

22:12

Вести эфир — офигенно, но довольно сложно.

22:16

К чёрту то, что думаю я. Мне скорее было интересно быть кем-то вроде ДИДЖЕЯ.
Мне интересны были вы и происходящее, а не "истина".

22:17
@rubyunderhood провокация, ложь, микросервисы
22:18

В жопу паттерны. Не важно "как правильно".
Важно какой мы сделали продукт, и насколько легко он масштабируется.

22:21

github.com

gist.github.com

other