artemeff

13 июля 2015, Russia, Yaroslavl

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

Здравствуйте! Меня зовут Юра, мне 21 год и я пишу на Ruby

9:21

На этой неделе с вами @artemeff :) Будет ROM, Lotus, почему Rails не очень и все такое :)

9:22
@rubyunderhood как давно начал изучение языка, фреймворка ?
9:22

Кроме Ruby могу поведать про Erlang, например

9:25

А еще, совсем недавно меня пустили в github.com/rom-rb и я официальный контрибьютор в команде по разработке адаптеров :)

9:35

Пописываю клиент для Elasticsearch github.com/artemeff/rom-e… (скоро станет официальным) и думаю над реализацией github.com/rom-rb/rom-red…

9:36

Для фреймворка Lotus написал вот штуку github.com/artemeff/newre…, чтобы отчеты о работе приложения отправлять в newrelic

9:39

Возможно, еще займусь интеграцией Lotus и ROM, потому что сейчас ей никто не занимается, она так и лежит на стадии прототипа

9:40

И есть желание создать организацию на гитхабчике с названием lotus-addons и написать пару гемов – авторизацию, например

9:42

Ну и еще написал пару мелочей на всяких разных языках, типа Elixir и Erlang

9:45

Краткий брифинг для формирования списка вопросов ко мне – окончен :)

9:46
@rubyunderhood расскажи про лотус, отличия между рельсами, преимущества
9:46
@rubyunderhood расскажи про лотус, отличия между рельсами, преимущества

Попытался продать Lotus twitter.com/vladimtco/stat…

9:56

В Lotus, кстати, скоро будут вебсокеты discuss.lotusrb.org/t/lotus-v0-5-0…

10:16

Со мной можно на ты :)

10:19
@rubyunderhood запускали в продакшн? Какую версию использовали?
10:19
@rubyunderhood, (хором): "Здравствуй, Юра"
10:25
@rubyunderhood, от себя скажу (как тимлид): Юра сильный разработчик, с незатуманенным мозгом. Рад такому бойцу в команде :-)
10:28

Давайте начнем издалека, про изучение языков программирования

10:37

Я, например, писал на пяти языках в продакшн и поверхностно знаком с еще около-десятком языков

10:38

Очень клево, когда можешь подобрать ЯП под задачу и таскать языко-фичи туда-сюда

10:39

А еще это очень развивает, становиться намного проще изучать новое

10:40

Теперь вы своими циферками делитесь, будем меряться :D

10:40

. @Stammru ок, просто я думал что все в треды смотрят, а не ленту :)

10:50
. @rubyunderhood отвечай так, а то не видно!

Дискас по поводу как мне отвечать на вопросы twitter.com/stammru/status…

11:02
@rubyunderhood ретвит и в начале ответа точка или ретвит с текстом
11:13
@rubyunderhood о, а вот это интересно. можно рассказать подробнее? зачем используете, пробовали ли заменять руби эрлангом?
11:13

. @mikhailbortnyk не заменял, все для своих задачек :) Erlang нужен там, где надо быстро байтики туда-сюда слать, распределенность и прочее

11:14
@rubyunderhood расскажи, с чего начинать изучать Erlang? можешь рассказать про concurrency и файл. структуры проектов Erlang/Elixir?
11:15

. @rastopyr_ua структуры диктуются фреймворком OTP для Erlang; в Elixir своя структура близкая к структуре гемов в руби

11:18

. @ptico ну, они ж себя позиционируют фреймворком, а в вебе оно должно быть фул-стек. Но я согласен, это не оч хорошо

11:20

. @ptico просто в дальнейшем его будет проще продавать

11:20

. @DaryaChu в больших компаниях тяжело уговорить, а в стартапцах я это делал без проблем

11:22

. @DaryaChu главное – продать технологию, рассказать почему они из-за этого получать больше денег, или меньше потратят :)

11:23

. @DaryaChu я им иногда помогаю :)

11:23

. @DaryaChu но у меня их один, поэтому проблем не много :D

11:23
@rubyunderhood @Stammru не, все в ленту смотрят :) треды, как и в руби, не нужны :)
11:24
@rubyunderhood а что еще, кроме руби/эрланга/эликсира?
11:24

. @anton_davydov эликсир в прод еще не совал. PHP, Ruby, Erlang, Go, JavaScript :)

11:25

. @mikhailbortnyk в Эрланге, с его акторами, это будет производительнее, легче поддерживать и ошибок меньше, т.к. let it crash

11:26

. @anton_davydov они сейчас пилят lotus-model, но я не знаю нафига, если есть rom и лучше брать rom

11:27

. @anton_davydov нет почти всего :) Сейчас только фреймворк, нужны готовые либы — для авторизации, например

11:28

. @anton_davydov новым контрибьюторам можно смотреть прямо в код, его мало и он хороший

11:28

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

11:29

. @anton_davydov попал легко. Я просто откликнулся в ишуйках в главном репо и сделал PR, Петр меня и добавил :)

11:30
@rubyunderhood как попал? :) я видел ты вроде бы для редиса обертку переписал?
11:30
@rubyunderhood как думаешь, куда стоит смотреть новым контрибьютерам в лотус? Что работает не очень, а чего вообще нет?
11:30
@rubyunderhood а как в компании на это реагируют? мол ты закончишься и кто будет поддерживать?
11:31
@rubyunderhood а на го что делал?
11:31

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

11:32

. @anton_davydov отчеты вида — где и с кем пил для Lapka BAM mylapka.com/bam/

11:33

. @listochkin @anton_davydov lotus круче :)

11:38
@rubyunderhood @ptico там вполне можно использовать отдельные части + они пока идут путем opt in (ну или со стороны так выглядит)
11:39
@rubyunderhood @anton_davydov у них roadmap есть, можно какую-то фичу пикапнуть в gitter чате + они помечают issues тегом help-wanted
11:39
@anton_davydov @rubyunderhood на Go можно писать всякие API и микрослервисы, или например выносить те же вебсокеты.
11:48

. @Bugagazavr @anton_davydov вот только я считаю, что писать сложную бизнес логику на го — очень боль и надо много времени

11:49
@rubyunderhood Жиденький хор из зала: “Здравствуй, Юра!”.
11:50
@rubyunderhood Почему он такой страшный?
11:51

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

11:51

. @suxxes тоже самое и у Эрланга, первый месяц-два я плевался, но потом мне очень понравилось

11:52

. @suxxes а пиво? :)

11:53
@rubyunderhood @anton_davydov не без этого, но иногда приходится идти на такие жертвы.
11:53
@rubyunderhood Пиво — ОК, но не всякое, да и вообще я больше люблю вино.
11:54

. @suxxes ну вот вино тоже можно сюда отнести, оно не всем понравилось сразу :)

11:54
@rubyunderhood @suxxes покажи хоть одного, кому вино не понравилось сразу? :-D
11:55

. @gruz0 @suxxes мне не сразу, попробовал впервые лет в 14)

11:55
@listochkin @rubyunderhood @anton_davydov более чистый код, лучше архитектура, отсутствие анального рабства basecamp
11:59
@listochkin @rubyunderhood @anton_davydov это если вкратце, а в деталях Rails еще то днище, один Active Support чего стоит
11:59
@rubyunderhood о, кстати, у меня есть подобная проблема: есть 2ух уровневый хеш и его в редис надо сохранить. Использовал серилизацию...
12:04
@rubyunderhood ... Но это оказалось плохой идеей, теперь я хочу сделать одноуровневый хеш с многоуровневыми ключами, т.е. ....
12:06
@rubyunderhood ... {foo: { bar: :baz }} в редисе будет таким : foo:bar - :baz. Что скажешь?
12:06

. @anton_davydov тут вопрос производительности, что будет быстрее – обернуть несколько запросов SET в транзакцию или сериализовать данные

12:07

. @anton_davydov для сложных структур в Redis есть вот такая поделка github.com/soveran/ohm

12:07

. @anton_davydov штука интересная, но очень сложная изнутри, и ее точно не надо в rom-redis :)

12:07
@rubyunderhood, куда пойти учиться молодому парню? Закончил школу, хочет в IT программистом. Накидайте вузов из Нерезиновой, комрады :-) RT
12:07

. @gruz0 лично меня в универе научили не спать по ночам, делать все на вчера и искать бесполезную инфу в интернете)

12:08

. @gruz0 так что тут вопрос не только «куда?», а еще «а оно надо?» :)

12:09

. @gruz0 лично я для галочки учился

12:09
@listochkin @rubyunderhood кроме того, что тебе сказали уже, в рельсу просто достаточно сложно писать, слишком много людей, все вылизано
12:09
@listochkin @rubyunderhood плюс всегда есть кор тим, у которой могут быть другие взгляды на какие-то проблемы. Такое с сафроновым было часто
12:09

. @listochkin @gruz0 работал с 15 лет и учился на очке :)

Правда плохо учился, но я ж для галочки

12:11
@gruz0 @rubyunderhood напоминаю, что отсутствие корочки сильно усложнит или сделает невозможным получение рабочих виз.
12:11

. @listochkin @gruz0 до сих пор? А то я слышал, что отменили — раньше ж вроде 12 лет опыта по специальности или степень бакалавра

12:12
@rubyunderhood @gruz0 зависит от конкретной страны, но в целом все грустно.
12:15
@gruz0 @rubyunderhood только если ради диплома, программист сам себя развивает.
12:15
@gruz0 @anton_davydov @rubyunderhood Неделя работы по специальности, будет продуктивней всех 5-6 лет учебы.
12:36

. @gruz0 @Bugagazavr @anton_davydov а как же школа? Меня там паскалю учили :)

12:37

. @gruz0 @anton_davydov @Bugagazavr да я согласен, что не нужен, зато даже из-за паскаля я понял, что это мое :)

12:40
@anton_davydov @rubyunderhood @Bugagazavr Паскаль не нужен уже сто лет в обед. Лучше Ruby/Python преподавать с первого курса, практичнее.
12:40
@rubyunderhood @gruz0 @anton_davydov И меня ему учили в школе, но очень поверхностно, в инсте были кресты и решетки.
12:41
@gruz0 @rubyunderhood @Bugagazavr преподавателей и русской литературы нет для руби
12:41

. @Bugagazavr @gruz0 @anton_davydov кресты в универе — пиздец, наверное?

12:41
@rubyunderhood @gruz0 @Bugagazavr меня вообще в школе учили кружочки на бейсике рисовать, поэтому первый язык не особо важен
12:42

. @gruz0 @Bugagazavr @anton_davydov да и C# тоже хороший, но преподавать C++ в вузе, когда за спиной нет 3-4 языков в ООП и ФП — пиздец

12:44

. @Bugagazavr @gruz0 @anton_davydov ааа, массивы переворачивали? :)

Алсо, int main() { return 0; } FTW!

12:44
@rubyunderhood @gruz0 @anton_davydov нас учил военный, "Значит так запомните, компьютер тупой! Без void main() работать не будет!"
12:45
@rubyunderhood @Bugagazavr @anton_davydov Дотнет хорош, очень хорош. Имею 4 года коммерческой разработки на C# за спиной :-)
12:45
@rubyunderhood @gruz0 @Bugagazavr важно прочувствовать это все, понять и полюбить, а научиться можно и самому :)
12:45

Очень хорошая библиотека, например github.com/ruby-concurren…

12:47
@mikhailbortnyk @rubyunderhood ну, кароч, если много клиентов, логика простая, хуяк хуйяк сообщения, тогда ерланг.
12:57

. @lisovskyvlad @mikhailbortnyk Эрланг может и в сложную логику :)

12:58
@mikhailbortnyk @rubyunderhood чаты, фидбек сервисы, ерланг может быть как распределитель нагрузки, как шина, даже, или я укурился?
12:58

. @lisovskyvlad @mikhailbortnyk чем угодно

12:58
@rubyunderhood а чем целлулоид не угодил? Или я совсем упорот?
13:08

. @anton_davydov celluloid про акторы, а concurrent-ruby о конкурентных примитивах :)

13:09
@anton_davydov @rubyunderhood это штука реализует больше кол-во паттернов для распределённых штук, ага? целлоид как больше о акторах
13:09
Lotus это когда ты знаешь что тебе нужно и не ограничиваешь себя каким-то там фреймворком? @rubyunderhood
13:09

. @lisovskyvlad ага, он расширяемый, гибкий и простой. Ничего не навязывает

13:10
@rubyunderhood ну типа такой же вау как и react js?
13:11

. @lisovskyvlad да, только реакт привнес FRP, а Lotus — ООП :D

13:12

New Transproc Released solnic.eu/2015/07/13/new…

16:11
@lisovskyvlad Lotus — это больше набор совместимых компонентов. Как конструктор. @rubyunderhood
17:08
Где грань между "Какой я плохой программист!" и "Вау, да я крутой! Пойду просить ЗП больше!"? // @backendsecret @jsunderhood @rubyunderhood
18:10

. @dcromster @backendsecret @jsunderhood когда тим-лид хвалит :)

18:11

. @KSDaemon @dcromster @backendsecret @jsunderhood ну тогда ждать похвалы сверху

18:15
Имхо, дело в банальном профите. У компании выросли доходы благодаря тебе? Проси > зп
@dcromster @backendsecret @jsunderhood @rubyunderhood
18:15

. @dcromster @TvorZasp @backendsecret @jsunderhood тогда можно от обратного — если в этом промежутке косяков меньше, чем в предыдущем :)

18:19

Кто какой редактор в работе использует? Сам сижу на ST3, и все хочу заставить себя перейти на vim

18:38

. @iamstarkov atom медленный и некоторые плагины там не работают. На vim очень много интересных решений

18:41

. @iamstarkov ну вот Ирленг в atom и st редактировать – без плюшек, тупо подсветка и сниппеты, есть кривое автодополнение в st, но это все

18:42

. @iamstarkov хочу умное автодополнение, запуск тестов для измененного кода и подсветку ошибок

18:46
@rubyunderhood когда ты отвечаешь без ретвита, люди видят только твой ответ, но не вопрос
18:49

. @iamstarkov да я все привыкнуть не могу

18:49
@rubyunderhood запуск тестов точно не должны быть встроены в редактор. для этого есть таск-раннеры
18:50

. @iamstarkov тем не менее они есть, и круто, когда ты такой код поправил, и редактор тебе у метода результаты теста показал или внизу

18:51
@rubyunderhood умное автодополнение должно уже быть реализовано для js, значит можно портировать и на erlang
19:00

. @iamstarkov можно, но совсем нет времени на это и опыта

19:00
@rubyunderhood а подсветка ошибок, что это? линтинг?
19:02

. @iamstarkov он самый

19:02
@rubyunderhood покажи скриншот, пожалуйста
19:03

. @iamstarkov ну вот мне нравится работа LightTable с кложурой

19:04
@rubyunderhood с помощью каких инструментов он реализован для эрланга?
19:05

. @iamstarkov я таких не видел, но можно запускать конпелятор и парсить ответ

19:05
@rubyunderhood @iamstarkov в виме с этим тоже не очень, ну или я просто не заморачиваюсь
19:06
@rubyunderhood @anton_davydov это же просто синтакс-хайлайтер
19:20
@rubyunderhood а почему не можешь себя заставить? Мне, например, просто лень учить все хотели emacs-а, хотя давно на него смотрю
19:21

. @anton_davydov зона комфорта — производительность упадет и я не знаю когда восстановиться до уровня

19:21
@iamstarkov @rubyunderhood там есть поддержка всего, css, js, Haskell, ruby, viml, erlang. Остальное не пробовал
19:22
@rubyunderhood а, на это забей, гарантирую, через месяц будет в разы удобней жить + производительность повысится на 146%
19:22
@rubyunderhood а, ну и да, если вы не почувствуете разницу - мы вернем вам деньги :)
19:45
СКОЛЬКО РУБИСТА НЕ КОРМИ, ВСЕ НА КРУД СМОТРИТ xD take.ms/MZN3Q @rubyunderhood
21:26
@rubyunderhood емкая для всего, и не нужно бояться. Хотя бывшие химеры очень рекомендуют idea
22:22
@rubyunderhood vim-еры конечно же!
22:23

. @svenyurgensson теперь их можно химерами называть :D

22:24

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

@rubyunderhood В последнее время RubyMine, местами использую Atom
11:12
@rubyunderhood @dcromster @TvorZasp @backendsecret @jsunderhood в нормальных компаниях премия разработчика напрямую зависит от пользы ;-)
11:12
@rubyunderhood, редактор — Vim с кучей плагинов под себя. IDE – RubyMine для рефакторинга и отладки.
11:12
@rubyunderhood Я есть АТОМ!
11:13
@Stammru У меня MBPR 15” середины 2014 года улучшенный базовый. Лаги достали, пересел на Atom. @rubyunderhood
11:14
@suxxes у меня late 2013 @rubyunderhood
11:14

. @Stammru @suxxes главное же проц, память и диск; какая разница какого оно года? :)

11:15
Кто какой редактор в работе использует? Сам сижу на ST3, и все хочу заставить себя перейти на vim

У нас тут хороший тред про редакторы раздулся twitter.com/rubyunderhood/…

11:16
@rubyunderhood @suxxes ну обычно на новых комплектующие лучше =)
11:16

. @Stammru @suxxes так и разница между ними, i3 vs i7, 4гб vs 16гб и т.д — существенно же

11:17
@rubyunderhood наврядли на прошка i3 @suxxes
11:18

. @Stammru @suxxes ну я так, мало ли :D

11:18

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

11:19
@rubyunderhood да, 4 мало. У меня 8, и всегда около гига свободно. Мак очень клёво жмёт оперативку у программ @suxxes
11:20

. @Stammru @suxxes ага, жмет, только тормозит от этого. А еще он у меня в своп лезет на 3-4гб, такие дела :)

11:21

. @Stammru @suxxes брал его и планировал обновить до 16, было много боли, когда узнал, что у них с 2011 (вроде) память впаяна

11:21
@Stammru @rubyunderhood @suxxes @rubyunderhood у моей железки i7 и 16 мозгов, нищебродненько. Надо больше памяти, БОЛЬШЕ! :-D
11:23

. @gruz0 @Stammru @suxxes даже 16гб мало? О.о

11:24
@rubyunderhood @Stammru @suxxes не, хватает, безусловно. Запустить сразу 4 виртуалки в VirtualBox, RubyMine и что-нибудь тяжёлое ещё :-)
11:25

. @gruz0 @Stammru @suxxes мне вот даже одну не запустить, поэтому я иногда в DigitalOcean разворачиваюсь

11:27
@rubyunderhood @Stammru @suxxes временно взял VPS и развернул там docker-образ c9ide. не то чтобы ide/редактор мечты но работать можно
11:27
@rubyunderhood geany для Perl, Brackets для Node
11:27
@rubyunderhood @Stammru @suxxes но памяти все равно мало! 4гб :(
11:30

. @rastopyr_ua @Stammru @suxxes даже читать больно

11:30
@rubyunderhood @Stammru @suxxes у нас зоопарк железяк на работе, не стесняйся для поиграться просить :-D
11:30

. @gruz0 @Stammru @suxxes ок, а можно кластер поиграться? :D

11:31
@rubyunderhood Да, поиграй с моим кластером, детка! @gruz0 @Stammru
11:31
@gruz0 4 виртуалки, хорошо живёте товарищи =) @rubyunderhood @suxxes
11:31
@Stammru @rubyunderhood @suxxes одна из типовых задач в работе — развернуть кластер Cassandra/ElasticSearch, забэкапить/восстановить.
11:32

. @gruz0 @Stammru @suxxes а я хочу играть с Riak, RethinkDB и CouchDB :D

11:32
@Stammru @rubyunderhood @suxxes а потом по методологии "хуяк-хуяк, в продакшн"! :-D
11:33
@suxxes @rubyunderhood @Stammru среплицируй его по взрослому, детка!
11:33
@rubyunderhood @Stammru @suxxes по CouchDB у нас есть положительный опыт уже. А по остальному — можно подумать, после запуска ОК ;-)
11:33

. @gruz0 @Stammru @suxxes вот RethinkDB очень интересная базулька, умеет в стриминг

11:34
@gruz0 @rubyunderhood мне кажется, что его киллер фича - взаимодействие с текстом как с объектом. От этого удобная навигация, удаление и тд
11:52
@rubyunderhood @gruz0 @Stammru @suxxes только на бенчах против MongoDB пока все еще RethinkDB отстает, а так pub|sub можно куда угодно вкрут
12:49
@rubyunderhood @Stammru @suxxes RubyMine, ST2 :) на 3-ий так и не перешел, не понял зачем он даже, текста в Ulysses пишу там markdown
12:49
Вопрос к читателям @rubyunderhood Вы скидываетесь на Bundler/Rubygems через rubytogether.org/roadmap ? И если нет, то почему?
13:08
.@rubyunderhood для справки: я на Ruby не пишу вообще, но деньгами помогаю.
13:09
@suxxes @gruz0 @rubyunderhood @Stammru а ещё подскажите как жить с 4гб оперативки ?
15:39
@pl__nk @suxxes @rubyunderhood @Stammru вполне себе нормально живётся, я так сидел год на Аэйре. VirtualBox, Vim + iTerm. На все задачи.
15:39
@rubyunderhood tmux + vim сила =)
15:52
Here’s a draft of “Data Import with ROM and Transproc” blog post I’m willing to publish soooon: gist.github.com/solnic/0c1f9e5… comments welcome :)

Data Import with ROM and Transproc twitter.com/_solnic_/statu…

17:27

А кто из вас использовал rom? И кто понимает, что это и зачем? :)

18:02
@rubyunderhood давай, жги
18:12

. @lisovskyvlad позже

18:12
@rubyunderhood каст данных в класс?
18:12

. @Bugagazavr ну, почти

18:12

ROM — это когда попа болит от ActiveRecord

18:17
@rubyunderhood кстати с rom используют DAO?
18:19

. @Bugagazavr DataMapper

18:19
@rubyunderhood кстати о rom, если найдется кто-то знакомый с их внутренней devtools — они бы не помешали здесь: github.com/mbj/inflecto/p…
18:23
@rubyunderhood когда у меня болит попа от AR, я начинаю писать raw sql, и кладу на rails way
18:24

. @Bugagazavr я тут о боли скорее в самом паттерне, чем в рельсовой реализации)

18:24
@Bugagazavr @rubyunderhood чтобы не скатываться до raw sql, есть просто прекрасный sequel
18:29

. @ptico @Bugagazavr или можно в Arel

18:29
@rubyunderhood @ptico не катит некоторые запросы очень большие и очень нетривиальные, их банально проще сапортить в raw виде.
18:30
@rubyunderhood @Bugagazavr чистый Arel создан в лучших традициях рельсового коммьюнити: минимум документации и странные API
18:30
@rubyunderhood @Bugagazavr я о внутренних тулзах если что. В чистом виде ни Arel, ни Journey использовать почти невозможно
18:31
@ptico @rubyunderhood @Bugagazavr мимими какое рельсовое комьюнити
18:33
@ptico @Bugagazavr @rubyunderhood есть кейсы, когда ты можешь только на чистом sql что-то сделать
18:33
@ptico @rubyunderhood @Bugagazavr не согласен, есть куча постов на тему того, как готовить arel
18:39
@anton_davydov @Bugagazavr @rubyunderhood в таком случае простейший Repository + Sequel/rawSQL решают
18:39
@iamstarkov @ptico @rubyunderhood @Bugagazavr на самом деле, в рельсе уже намного лучше покрыте документацией (около 75+%)
18:39
@rubyunderhood Это же дата мапер который, да?
22:35

. @suxxes он самый

22:35
@Bugagazavr Вот та же фигня, кстати. @rubyunderhood
22:35
@rubyunderhood у нас на прошлом проекте вовсю virtus использовали
22:35

. @G3D а я его вообще пихаю куда только можно, очень крутая штука

22:36
В @rubyunderhood обсуждают какие-то ROM с DAO. Не понимаю, в чём смысл обсуждать технологии записи болванок, если внешний винт куда как ёмче
22:36

. @ZaZooBred чтобы в говнокоде не захлебываться

22:36
@suxxes @rubyunderhood блях, ребята, вам надо форум мутить, тут неудобно вас читать
23:46
@rubyunderhood Да норм АТОМ, че ты гонишь? Ну подлагивает на папках в 500+ файлов, если в дереве открывать…@iamstarkov
23:46

. @suxxes @iamstarkov на i7 c 16гб может быть, но у меня даже интерфейс ОС глючит

23:47

# Среда 51 твит

. @Bugagazavr для каста данных можно использовать Virtus, и он, кстати, очень круто работает вместе с ROM

10:16

Кто до сих пор не знаком с паттерном Data Mapper, очень советую ознакомиться

11:03

Он очень простой и избавляет от боли, единственный его минус – кода будет немного больше

11:03

Зато покрывать этот код тестами будет легко

11:04

С этим паттерном модели будут намного легче

11:06

Потому что Active Record, по крайней мере рельсовый, диктует нам держать все в моделях — логику, валидации, персистентность

11:06

От этого в коде появляется много подпорок на подобии before_create, new_record? и прочих

11:07

Active Record шлет SOLID нахер и не стесняется

11:09

ROM — это Pure Old Ruby Objects (PORO) и разделение обязанностей :)

11:10
@rubyunderhood не соглашусь. Никто же не мешает не хранить.
11:10

. @rainrb я сейчас чисто про rails-way, там так можно и они это поощряют, судя по всему

11:11

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

11:11

Это особенно удобно для тестов, когда можно покрыть тестами персистентность и использовать, например, хранилище в памяти в остальных тестах

11:12

Вот так сейчас выглядит мой текущий проект pic.twitter.com/PgFQKfWlDD

11:13

Message Objects своровал из клиентов для телеграма :)

11:14
@rubyunderhood а еще ваши волосы станут гладкими и шелковистыми
11:15

. @anton_davydov продажник от бога

11:15
@rubyunderhood мне не нравится что Data Mapper прибивает гвоздями схему документа, даже для NoSQL бекендов, насколько я понял
11:17

. @svenyurgensson ты сейчас о конкретной реализации или о паттерне?

11:17
@rubyunderhood ну все мною виденные реализации имеют внутри жесткую схему. Как туда укладывать разные документы монги - непонятно
11:19

. @svenyurgensson в rom можно создать несколько команд, если нужно разные схемы в одну коллекцию

11:19

. @svenyurgensson но я считаю, что типизация (схема) должна быть в любом случае :)

11:20

. @svenyurgensson а если в документе могут быть разные поля, то я бы их хранил в отдельном поле документа

11:20

. @svenyurgensson сейчас использую эластик и дико негодую, что нет схемы

11:22
@rubyunderhood где можно это увидеть в документации? есть примеры?
11:27

. @svenyurgensson вот наклепал побыстрому пример gist.github.com/artemeff/70658…

11:27
@rubyunderhood я не знаю, насколько это удобно, но на первый взгляд - очень много плясок с бубном на пустом месте, обоснованно ли?
11:28

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

11:29

. @svenyurgensson очень круто, например, что для :create_admin могут быть свои валидации, а для :create_manager уже другие

11:29

Вот вам пример-завлекалочка в ROM gist.github.com/artemeff/70658… :)

11:36

А еще для ROM очень легко писать адаптеры — достаточно реализовать несколько интерфейсов

11:38

И адаптером может быть что угодно — память, csv, git, redis, psql, riak

11:38

Адаптер для elasticsearch уместился в 200 строк

11:40

Незаконченный redis (остались команды) — 115 строк

11:41
@rubyunderhood @svenyurgensson можно view model сделать и решить этот вопрос и с AR
12:10

. @rainrb @svenyurgensson не пойму как view model (декоратор?) решают проблемы валидации

12:10

. @rainrb @svenyurgensson идеологически, декораторы же совсем о другом

12:13
@rubyunderhood @svenyurgensson идеологически, или технически? Технически все очень просто вроде
12:16
@rubyunderhood @svenyurgensson почему о другом? Декоратор - паттерн, область его применения может быть какой угодно.
12:16

. @rainrb @svenyurgensson окей, мой тупняк :)

12:16

Deep Dive Into ROM by Piotr Solnica speakerdeck.com/solnic/deep-di…

12:34

Deep Dive Into ROM... With Clojure ku1ik.com/2015/07/13/dee…

12:34
@rubyunderhood Я бы сказал PORNO (Pure Old Ruby Native Objects). :)
23:23
@rubyunderhood Где validators?
23:23

. @suxxes а они в forms

23:24
@anton_davydov Кому нужны твои волосы? От баб отбоя не будет и член сразу до 35см увеличится! Вот так надо продавать. @rubyunderhood
23:24
@suxxes мой способ привлек сразу парней и девушек. А твой - только пхпшников @rubyunderhood
23:24
@rubyunderhood броооо!
23:25
@rubyunderhood еще бы пощупать такое, пусть и не продакшн код, а пример. :)
23:25

. @sesharim а что именно интересно? :)

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

23:26

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

Каким вы видите язык программирования своей мечты?

12:28

Мне вот всегда хотелось использовать симбиоз из Haskell/Erlang/Ruby

12:29

Можно даже так Scala/Erlang, но без jvm. Виртуальная машина Эрланга мне очень нравится, легковесная, достаточно быстрая

12:30

Хочется, чтобы каждый объект в ООП был актором и они друг с другом общались сообщениями, как процессы в Эрланге

12:31
@rubyunderhood всего одня функция: doit :)
12:33
@rubyunderhood как Ruby только расстрелять людей вечно ноющих и недовольных в комьюнити 😆
20:56
@rubyunderhood Есть идеи как подключить к ROM MongoDB Replica Set? ROM-mongo использует Mongo::Client github.com/rom-rb/rom-mon… ?
20:57

. @ivaravko с монгой не работал, но есть monkey patching, например

20:58
@rubyunderhood 1) зачем? 2) Elixir/Erlang
20:59

. @listochkin 1) было бы просто круто, много проблем решилось бы при должной реализации. 2) они не умеют в ООП

21:00
@listochkin @rubyunderhood кстати мне один из ведущих devzen с большим опытом Erlang сказал что делать акторы на каждый чих нехорошо
21:00

. @rastopyr_ua @listochkin а кто именно?

21:00
@mpak999 @rubyunderhood в руби, между прочим, ещё отличное коммьюнити в этом плане
21:00

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

@rubyunderhood @listochkin Валера Мелешкин
0:38

. @rastopyr_ua @listochkin ему верю :) надо будет исследовать этот вопрос

0:38
.@rubyunderhood акторы - это как раз то, как ООП представляли себе Даль, Ныгорд и Кей.
0:38
@rubyunderhood @ivaravko желаю тебе никогда не работать с Монгой.
0:38
@rubyunderhood а можно и пояснить и выложить? Будет очень полезно. Спс!
0:40

. @sesharim окей, я тогда лучше в своем бложике напишу :)

0:40
Когда смутно хочется правильного pic.twitter.com/9p9xD15JIG
0:59

У нас сегодня пятница :)

12:13

Рассказывайте кто чем занимается сейчас на работке

12:13
written first program on @CrystalLanguage. Very nice language!
github.com/davydovanton/A…
21:46

. @anton_davydov @CrystalLanguage я думаю, он выстрелил, если сохранил бы обратную совместимость с mri

21:47
@rubyunderhood на самом деле - я пока не смог придумать зачем он нужен в принципе. Только по этому для меня он не выстрелил :)
21:53

. @anton_davydov вот, да :)

21:54
@rubyunderhood Пытаюсь перейти на webpack, но БОЛЬ!!!
21:54

. @suxxes я говорил, что потребуется время на настройку :)

21:54
@rubyunderhood в принципе, это как с nim, у них нет четкой позиции, как например у go/rust, поэтому сложно сказать зачем первые нужны
21:55
@rubyunderhood Лучше бы помог. :) Так быстрее будет.
22:09

. @suxxes вот мой конфиг gist.github.com/artemeff/16767…

22:10

. @suxxes в dev css файлы будут вместе с js кодом, для горячей перезагрузки

22:10

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

Boundaries от Gary Bernhardt destroyallsoftware.com/talks/boundari…

1:47

github.com

other


@suxxes
@rainrb