artemeff

13 июля 2015, Russia, Yaroslavl

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

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

6:21

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

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

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

6:25

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

6:35

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

6:36

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

6:39

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

6:40

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

6:42

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

6:45

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

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

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

6:56

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

7:16

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

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

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

7:37

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

7:38

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

7:39

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

7:40

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

7:40

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

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

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

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

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

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

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

8:18

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

8:20

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

8:20

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

8:22

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

8:23

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

8:23

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

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

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

8:25

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

8:26

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

8:27

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

8:28

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

8:28

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

8:29

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

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

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

8:32

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

8:33

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

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

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

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

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

8:51

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

8:52

. @suxxes а пиво? :)

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

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

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

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

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

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

9:07

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

9:07

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

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

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

9:08

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

9:09

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

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

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

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

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

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

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

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

9:37

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

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

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

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

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

9:44

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

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

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

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

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

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

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

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

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

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

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

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

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

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

10:12

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

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

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

15:11

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

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

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

15:19

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

15:38

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

15:41

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

15:42

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

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

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

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

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

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

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

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

. @iamstarkov он самый

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

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

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

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

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

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

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

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

19:24

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

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

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

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

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

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

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

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

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

8:18

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

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

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

8:21

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

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

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

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

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

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

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

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

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

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

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

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

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

8:34
@gruz0 @rubyunderhood мне кажется, что его киллер фича - взаимодействие с текстом как с объектом. От этого удобная навигация, удаление и тд
8:52
@rubyunderhood @gruz0 @Stammru @suxxes только на бенчах против MongoDB пока все еще RethinkDB отстает, а так pub|sub можно куда угодно вкрут
9:49
@rubyunderhood @Stammru @suxxes RubyMine, ST2 :) на 3-ий так и не перешел, не понял зачем он даже, текста в Ulysses пишу там markdown
9:49
Вопрос к читателям @rubyunderhood Вы скидываетесь на Bundler/Rubygems через rubytogether.org/roadmap ? И если нет, то почему?
10:08
.@rubyunderhood для справки: я на Ruby не пишу вообще, но деньгами помогаю.
10:09
@suxxes @gruz0 @rubyunderhood @Stammru а ещё подскажите как жить с 4гб оперативки ?
12:39
@pl__nk @suxxes @rubyunderhood @Stammru вполне себе нормально живётся, я так сидел год на Аэйре. VirtualBox, Vim + iTerm. На все задачи.
12:39
@rubyunderhood tmux + vim сила =)
12: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…

14:27

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

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

. @lisovskyvlad позже

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

. @Bugagazavr ну, почти

15:12

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

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

. @Bugagazavr DataMapper

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

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

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

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

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

. @suxxes он самый

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

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

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

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

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

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

20:47

# Среда 51 твит

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

7:16

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

8:03

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

8:03

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

8:04

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

8:06

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

8:06

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

8:07

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

8:09

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

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

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

8:11

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

8:11

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

8:12

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

8:13

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

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

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

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

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

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

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

8:19

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

8:20

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

8:20

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

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

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

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

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

8:29

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

8:29

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

8:36

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

8:38

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

8:38

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

8:40

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

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

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

9:10

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

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

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

9:16

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

9:34

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

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

. @suxxes а они в forms

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

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

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

20:26

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

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

9:28

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

9:29

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

9:30

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

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

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

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

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

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

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

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

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

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

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

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

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

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

9:13

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

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

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

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

. @anton_davydov вот, да :)

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

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

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

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

19:10

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

19:10

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

22:47

github.com

other


@suxxes
@rainrb