common_disease

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

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

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

9:30

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

9:34

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

9:35

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

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

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

9:50

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

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

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

10:11

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

11:11

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

11:16

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

11:16

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

11:17

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

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

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

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

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

11:46

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

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

/@listochkin солидно!

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

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

12:41

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

12:44

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

12:46

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

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

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

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

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

13:37
@rubyunderhood binding.pry
15:53

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

16:57

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

17: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
19:49
Как у Вас дела вообще ? Тяжеловато приходится ? Или ничего?
20:23

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

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

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

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

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

21:58

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

Добрый день!

13:03

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

13:04

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

13:06

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

13:06

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

13:10

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

13:11

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

13:13

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

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

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

13:16

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

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

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

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

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

15:08

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

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

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

15:10

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

15:11

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

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

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

15:15

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

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

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

15:22

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

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

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

16:49

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

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

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

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

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

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

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

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

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

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

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

19:24

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

19:27

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

19:28

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

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

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

19:34

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

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

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

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

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

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

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

20:37

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

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

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

20:52

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

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

Stay true, stay rebel!

20:54

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

20:55

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

21:01

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

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

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

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

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

22:11

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

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

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

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

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

22:37

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

22:42

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

22:46

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

23:05

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

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

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

23:07

# Среда 93 твита

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

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

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

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

6:54

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

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

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

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

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

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

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

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

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

9:49

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

9:50

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

9:51

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

9:52

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

9:53

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

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

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

10:01

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

10:04

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

10:04

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

10:05

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

10:05

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

10:07

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

10:08

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

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

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

10:10

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

10:24

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

10:24

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

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

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

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

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

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

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

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

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

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

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

10:37

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

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

/@fxposter twitter.com/rubyunderhood/…

10:46

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

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

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

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

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

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

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

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

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

10:58

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

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

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

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

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

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

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

13:57

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

15:20

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

15:21

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

15:22

А вы как?

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

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

15:24

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

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

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

16:09

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

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

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

16:30

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

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

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

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

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

18:56

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

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

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

20:21

# Четверг 236 твитов

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

10:36

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

10:37

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

10:37

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

10:37

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

10:37

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

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

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

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

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

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

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

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

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

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

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

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

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

12:00

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

12:00

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

12:00

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

12:01

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

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

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

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

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

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

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

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

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

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

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

12:24

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

12:25

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

12:26

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

12:27

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

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

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

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

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

12:34

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

12:34

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

12:35

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

12:36

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

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

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

12:37

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

12:40

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

12:40

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

12:41

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

12:43

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

12:43

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

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

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

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

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

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

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

12:48

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

12:49

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

12:51

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

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

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

12:57

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

13:02

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

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

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

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

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

13:28

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

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

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

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

15:03

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

15:11

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

15:11

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

15:11

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

15:25

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

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

15:34

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

15:47

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

15:48

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

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

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

15:51

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

15:52

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

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

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

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

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

16:05

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

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

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

16:22

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

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

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

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

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

16:30

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

16:30

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

16:31

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

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

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

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

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

16:38

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

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

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

17:46

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

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

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

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

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

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

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

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

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

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

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

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

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

19:37

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

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

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

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

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

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

/@suxxes !!!

19:50

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

19:52

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

19:53

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

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

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

19:58

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

19:59

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

20:01

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

20:02

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

20:03

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

20:03

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

20:04

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

20:05

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

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

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

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

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

20:17

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

20:19

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

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

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

20:23

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

20:26

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

20:28

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

20:34

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

20:34

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

20:38

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

20:39

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

20:46

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

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

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

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

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

21:00

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

21:01

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

21:05

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

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

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

21:33

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

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

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

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

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

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

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

22:23

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

22:24

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

22:25

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

22:26

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

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

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

22:30

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

22:30

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

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

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

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

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

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

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

22:41

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

22:42
@rubyunderhood @nepalez @anton_davydov вот, кстати, да. Есть куча трюков и крутых плагинов, про которые нигде не пишут
22:44
@rubyunderhood @nepalez @anton_davydov в общем, нужно убить свою лень и завести блог
22:44
@ptico @rubyunderhood @anton_davydov книгу, кроме Джереми, кто напишет? Как в ROM: код читали все, а кроме Петра его вряд ли кто понимает
22:47

# Пятница 135 твитов

@rubyunderhood Ну кто знает, може ещё что-то появилось да я пропустил :)
Целлюлоза вообще няша git.sysalex.com/snippets/9, удобная :)
5:08
@POS_troi @rubyunderhood make_host_list какой-то хардкор... :-)
5:08

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

5:09

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

5:14

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

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

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

8:24

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

8:25

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

8:27

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

8:30

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

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

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

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

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

8:40

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

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

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

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

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

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

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

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

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

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

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

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

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

10:37

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

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

/@mr_The да, писал

10:39

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

10:44

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

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

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

10:46

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

10:49

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

10:51

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

10:53

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

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

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

10:57

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

10:57

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

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

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

11:14

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

15:01

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

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

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

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

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

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

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

15:38

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

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

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

15:40

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

15:42

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

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

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

16:07

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

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

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

16:50

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

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

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

17:24

MAKE CODE NOT WAR

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

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

17:30

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

17:32

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

17:41

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

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

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

18:21

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

18:22

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

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

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

18:44

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

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

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

18:51

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

18:52

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

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

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

19:02

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

19:21

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

19:42

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

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

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

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

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

21:51

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

21:54

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

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

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

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

9:45

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

9:46

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

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

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

10:00

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

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

/@Bugagazavr гугли FiM++

10:08

/@Shiroginne моар!

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

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

16:30

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

16:31

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

16:37

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

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

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

16:47
@rubyunderhood а, кстати, можно взять с собой 3ds и пройти Зельду ;)
16:48
Время селфи pic.twitter.com/EQBC7idBKC
21:13
Challenge accepted: create #lisp interpreter on #ruby 🎉 pic.twitter.com/7FtTuhDgFa
21:13

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

21:13
@rubyunderhood на ночь глядя вспомнил про отличный роман - "Младший брат" от Кори Доктороу. Рекомендую ru.wikipedia.org/wiki/%D0%9C%D0…
21: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
21:24

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

21:25

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

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

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

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

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

21:41

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

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

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

22:59

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

23:12

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

23:12

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

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

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

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

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

10:28
Реакт, реакт — и в продакшн.
10: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
10:33

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

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

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

12:01

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

13:10

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

13:10

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

13:11

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

13:11

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

13:14

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

13:15

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

13:15

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

13:16

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

13:17

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

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

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

13:20

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

13:22

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

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

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

13:30

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

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

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

13:35

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

13:36

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

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

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

13:40

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

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

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

13:58

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

14:00

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

14:04

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

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

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

14:18

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

14:20

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

14:22

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

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

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

14:24

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

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

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

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

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

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

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

15:02

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

15:11

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

15:12

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

15:13

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

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

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

15:21

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

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

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

18:52

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

18:52

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

19:02

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

19:04

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

19:12

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

19:16

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

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

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

19:21

github.com

gist.github.com

other