# Понедельник 63 твита
Всем привет, на этой неделе с вами @ptico. Живу в Киеве, работаю техдиром в Aejis, ем стейки и пью тёмное пиво.
12:40Так же вы можете меня знать как соорганизатора почившего в бозе RubyConfUA и родившегося из него @RubyMeditation
12:42Могу рассказать про использование руби без рельс, немного про девопс и фронтенд. Короче всего по чуть-чуть: работа такая
12:44Одна из предыдущих недель начиналась с фотографий рабочих столов. Предлагаю начать эту с меряньем чей питомец круче.А потом и к техническому
12:47. @rubyunderhood показывайте уже своих котиков, вот мой, например pic.twitter.com/K3K7fFkhdC
Заодно расскажите как вы восстанавливаетесь и заставляете себя работать после бурных выходных?
13:06@rubyunderhood ох зря, зря, зря :) pic.twitter.com/M7AaoSYbqN13:09![]()
Пока я испытываю свой мимиметр и пытаюсь собрать себя в кучу после выходных, расскажите как у вас в компании относятся к удаленке
14:07И, если хорошо, то как организовываете взаимодействие
14:08@rubyunderhood у нас это основа компании. Удаленно работают почти все :)14:11
. @POS_troi у нас необязательное посещения офиса, но правило в определенное время быть в онлайне и отвечать + посещение офиса раз в неделю
14:12. @POS_troi сейчас, например, рядом со мной сидят 9 человек из ≈20. Некоторых иногородних я не видел с новогоднего корпоратива
14:16Правило приходить в офис касается только местных и сделано для того чтобы люди могли пообщаться вживую.
14:19Когда тебе приходится часто смотреть в глаза сокомандникам, ты становишься более вежливым и более уважительно относишься к их труду
14:20Про bluejeans слышу впервые, спасибо “@dzaporozhets: @rubyunderhood сначала hangouts. Теперь bluejeans тк позволяет 15+ человек”
14:21А вообще, почти все правила у нас имеют пометку «Хотите от него отступить — пообщайтесь со своим PM». Совсем жестких требований мало
14:26Вообще видеоконференции это отдельная боль. В свое время, решающим доводом в пользу перехода на Slack был многообещающий Screenhero
14:32В итоге, скринхиро оказался еще большим говном чем скайп, поэтому сейчас пока пользуемся hangouts
14:33@rubyunderhood talky.io пробовали?14:45
Тут в соседнем твиттере @backendsecret подняли очень интересную тему, которую я тоже собирался обсудить: безопасность приложений
14:47Судя по всему, руби-разработчики предпочитают кошек. Хотя я знаю как минимум одного читателя у которого удав
15:08Сирожа, покажи нам своего удава, не стесняйся, здесь все свои
15:09@rubyunderhood у нас пока доминируют собаки - about.gitlab.com/team-pets/ :)15:10
Давайте немного похипстеруем: кто-нибудь использует нереляционные СУБД в продакшне? Какие? Почему?
16:38. @lisovskyvlad да. В итоге сейчас у меня монолит на достаточно изолированых сервис-объектах с единой БД. Получается просто и эффективно
16:43У нас, в основном, используется Redis в качестве вспомогательной БД.
16:46Пробовали вкрутить Neo4j, но он в ruby работает только через http и это очень медленно. А на jRuby так и не решились перейти
16:47Redis очень хорош для некоторых типов задач и к тому же достаточно быстр: speakerdeck.com/ptico/the-big-…
16:48@rubyunderhood Тоже redis. Удобно хранить вспомогательные данные. Особенно к которым надо ставить expire. Или хранить hash'ы, массивы16:59
Кстати, недавно проскочила статья про связку PostgreSQL и Redis с помощью Foreign Data Wrappers blog.codeship.com/heroku-data-li… очень интересно
17:15Единственное что вызывает у меня опасение - это Heroku. Нет ничего более беспомощного, безответственного и испорченного, чем Heroku
17:17Я знал, что рано или поздно мы перейдем и на эту дрянь
17:17Как-то странно, где же пользователи MongoDB и пр.? Смузи в коворкингах закончилось?
17:55Хорошо, раз хипстеров мало, вопрос обратный: сколько из нас используют Postgres? Какие его фичи кроме SELECT * используете?
18:17@rubyunderhood postgis, hstore, jsonb теперь18:18
. @zhulikgleb какие-то специфичные библиотеки используете? Или все средствами ORM?
18:20@rubyunderhood только редис, отлично делает то что pg делает плохо. Mongodb обходу за километр, натерпелся18:32
Судя по всему, все стоят в пробках по дороге домой. Поэтому я пока нагоню вам аппетит и немного расскажу за стейки
18:53Если вы никогда не пробовали готовить стейк — самое время это сделать.
18:53В первую очередь вам необходимо выбрать мясо. В идеале это должно быть специальное мясо для стейков: t-bone, ribeye, филе миньон или пр.
18:55Если в магазине нет специального мяса, можно брать обычную говядину и просить кусочек вокруг кости или с жировой прослойкой.
18:59По хорошему, мясо нужно выдержать. Как это делается, можете нагуглить по кейворду beef aging
19:01Затем, незадолго до приготовления стейк можно приправить. Я немного присыпаю солью и черным перцем. Так же можно добавить немного тимьяна
19:05Для лучшего впитывания, можно сделать неглубокие насечки острым ножом в виде ромбиков
19:06Так же некоторые готовят маринады
19:06Сковородку иметь лучше чугунную: она делает более равномерный нагрев. В идеале это должна быть сковорода гриль.
19:08Главный секрет: сковорода должна быть хорошо разогрета. Не раскаленная, но очень жаркая. Лично я масло не лью, а намазываю им сам стейк
19:09Стейк жарим, в зависимости от мяса 2-4 минуты с каждой стороны по два раза. Степень прожарки можно проверять надрезами.
19:11Серединка должна быть немного сыроватой, а верхушка с хрустящей корочкой.
19:12После приготовления я добавляю крупной соли и ложу таблетку из сливочного масла. Есть нужно отрезая кусочки которые вы можете легко жевать
19:12Приятного аппетита. Надеюсь я не слишком заспамил вам ленту
19:13И да, если у вас не получилось с первого раза — не расстраивайтесь. Я испортил киллограм 10 мяса пока не научился. Но результат того стоит
19:16@rubyunderhood materialized views, jsonb19:26
Materialized views одна из самых крутых фич добавленных за последнее время @scarfacedeb
19:29@rubyunderhood мы их используем для очистки и нормализации данных собранных из разрозненных источников19:34
@rubyunderhood Скажем приведение к единому виду названий и группировка сходных элементов19:34
@rubyunderhood with recursive as (20:16
@rubyunderhood hehe, k. Biased response: I and some others use it, and its great ;)20:17
@rubyunderhood, какими ещё надрезами? Тыкать пальцем и только, либо купить щуп-термометр.20:23
@gruz0 То уже не то, идеал это савдепия. Мы покупали у бабушки на рынке. У современных чугун тонкий плохо жарит. @rubyunderhood20:42
На сегодня, пожалуй, всё. Я и котэ желаем вам спокойной ночи и обещаем не оффтопить до пятницы pic.twitter.com/7Mgi3yVelT
# Вторник 45 твитов
Доброе утро. Пока я продираю глаза вот вам бодрячка для заряда на день pleer.com/tracks/8540920…
11:35Продолжим тему БД: вы тестируете свою схему, вьюхи и триггеры? Как?
12:46@rubyunderhood github.com/bluerogue251/m… есть еще такая история, но по мне оверкилл13:27
@rubyunderhood так а пользователи на что?! :)13:27
Мы когда-то использовали shoulda. Но как оказалось она больше тестирует сами аттрибуты модели, а не реальную схему.
13:28Плюс мы начали переносить часть логики в БД, соответственно стал вопрос о её тестировании
13:30В итоге мы наваяли такой гем github.com/Ptico/rspec-se… а всю кастомную логику тестируем средствами Sequel
13:31. @mpak999 @lisovskyvlad забыть можно если у тебя DataMapper и нет логики в БД. А так, по сути, мы рассматриваем БД как отдельный проект
13:37Параллельно с обсуждением БД, веду перепись едущих на Euruko
13:48. @come_on_android 1. Случаи с race-condition – на уровне БД это проще решать. 2. Тяжёлые по производительности вещи
15:12. @come_on_android как простой пример, можно вспомнить про validate_uniqueness_of который не работает по сути. Или counter-кеши
15:36По поводу validate_uniqueness_of вспомнился вот этот доклад Эрни Миллера про AR youtube.com/watch?v=yuh9CO… посмотрите обязательно
15:39А я вам потом немного Sequel попиарю
15:40@rubyunderhood @come_on_android youtube.com/watch?v=EYJnWt… очень советую посмотреть, возможно начнете по-другому относится к уникальности/etc:)16:33
Итак, Sequel – это больше не ORM, а database toolkit. По умолчанию в нем есть только DSL похожий на Arel
16:34Если вы знакомы с гемом squeel от вышеупомянутого Ernie Miller — он вдохновлялся именно синтаксисом Sequel
16:36Не смотря на свою простоту и лёгкость, вся мощь заключается в extension-ах и плагинах, коих из коробки идёт чуть более чем дофига
16:37К примеру Sequel::Model – это реализация паттерна Active Record практически в том виде, в котором вы привыкли его видеть в геме AR
16:39А с помощью плагина activemodel вы можете сделать его AM compliant. Т.е. подавляющее большинство гемов для рельс с ним будет работать
16:40Всё это не подгружается по умолчанию, поэтому вы сами включаете только то что нужно. Во многом благодаря этому Sequel очень быстр
16:41Если вы замените AR на Sequel на старте Rails проекта, то вы не получите дискомфорта. Sequel хорошо документирован sequel.jeremyevans.net/documentation.…
16:44Так же обратите внимание на страницу с плагинами sequel.jeremyevans.net/plugins.html Что радует, так это уделенное внимание специфике PostgreSQL
16:51Особо радует поддержка стриминга, datatypes типа hstore и приятности вроде RCTE-tree и tactical eager loading
16:53Джереми — автор Sequel, очень милый и контактный чувак. Сейчас в трекере 0 открытых issues и я редко видел больше 1й.
16:56Вообще, по личным ощущениям библиотека более стабильная чем AR и почти все релизы — это мелкие багфиксы и новые модули
17:08Задавайте вопросы по Sequel, постараюсь ответить что сам знаю
17:12. @mpak999 если речь идет про Rails – то вот мой стартовый гемфайл gist.github.com/Ptico/cd61a062…
17:42Кстати, если у кого-то есть подготовленные стартовые гемфайлы — делитесь, думаю каждый что-то новое найдет
17:44Ну в общем вы поняли pic.twitter.com/wyoJODjqDF
Меня тут попинали бложек сделать. Расскажите кто на чем ведёт. Можно заодно ссылку на свой, если он про ruby
18:36@rubyunderhood вопрос от новичка. Сейчас учу Руби. Когда мне переключается на освоение РоР?18:50
@rubyunderhood у меня бложик это полигон для испытаний, рельсы апи + впереди нода/реакт alexfedoseev.com19:07
Пока мы тут в твиторах балду пинаем, майкрософт выпустил лэптоп youtube.com/watch?v=XVfOe5…
19:10Теперь синий экран смерти встроен прямо в BIOS
19:11А еще наверняка будет «Мастер включения компьютера»
19:19Пора закругляться. Расскажите напоследок про самое уродское или странное тех.решение которое вы видели в проектах pic.twitter.com/gcz4zVT3y9
Нам, к примеру, достался проект, авторы которого превратно поняли идею разделения на сервисы и синкали ВСЮ БД через JSON HTTP запросы
19:28. @pinyslutty из книг «Practical Object-Oriented Design in Ruby», онлайн курсы не очень знаю, оффлайн @kottans_org
19:48@rubyunderhood файлик oneliners.rb на 5к строк с историей комманд которые так или иначе меняли что то в базе через rails console.20:12
. @lisovskyvlad у нас такое на quick review регулярно отстреливается со ссылкой на youtube.com/watch?v=Oj4vXM…
20:17@rubyunderhood очень знакомо, часто с этим сталкиваюсь в работе. Одна из первых статеек у меня в блоге goo.gl/Dkg2HF20:38
Ещё как-то один чувак упоролся по STI и засунул почти всю БД в одну таблицу ещё и с полиморфными связями. Потому что поле title было общее
22:58# Среда 14 твитов
Котэ устроилась спать и я последую её примеру pic.twitter.com/JsmqjZUiSL
Спокойной ночи youtu.be/hi4pzKvuEQM
0:42Доброе утро чят! Сядьте на стул, держитесь за него крепко и вдохните поглубже…
11:28Готовы? Так вот, тестовый выпуск Perl 6.0 ВЫШЕЛ!
11:30Когда я был совсем маленьким программистом, ко мне на улице подошёл дядя, дал конфетку и предложил пойти к нему чтобы подкрутить багзиллу
11:33Что было дальше не хочу вспоминать. Стыд, боль и унижение до сих пор терзают мою душу
11:35К чему это я? А, да, уже в то время Perl6 ожидался чуть-ли не со дня на день.
11:37Кто не в курсе: Perl оказал довольно большое влияние на Ruby, а потом Perl6 заимствовал идеи Ruby обратно
11:44Среда, день когда многие подгоняют работу за Пн-Вт и готовятся к Чт-Пт. Если хотите продолжить в том же темпе - RT, отдыхаем - Fav
12:16Это я про плотность твитов если что
12:17Тишина, тлен и безысходность в нашем чате pleer.com/tracks/8176886…
15:16Расскажите где вы хоститесь. Где сейчас хорошо и безгеморройно?
15:17Кстати,мало кто знает,но если приконнектиться к консоли heroku, а потом прислонить ухо к компьютеру, то можно услышать как горят ваши деньги
15:45. @vassilevsky можно сказать и так. Матц говорил что он хотел сделать «Better perl» или что-то типа того
20:58# Четверг 23 твита
@rubyunderhood поделитесь опытом, как начинали. Какие подводные камни были и т.п.0:28
Ну что, сегодня кто-нибудь читает этот твиттер?
13:04@rubyunderhood не, все уже на perl6underhood переподписались13:42
@rubyunderhood В перерывах между работой )13:43
Кстати, расскажи, для каких задач используешь Ruby без Rails.
Руби без рельс, так руби без рельс :) В первую очередь, это задачи не требующие непосредственного рендеринга UI: JSON API в основном
13:45run ->(env) { [ 200, { 'Content-Type' => 'application/json' }, [ JSON.dump({status: 'ok'}) ] ] }
13:52Простейший пример JSON API на Rack вмещается в твит. В реальности все немного сложнее, но не сильно
13:53В одной из дискусиий здесь же, я уже делал пример, можно сразу лезть в спеки: github.com/Ptico/rubyunde…
13:56Подобные use_cases одним щелчком пальца превращаются в нужный нам rack ответ. Не смотря на свою сложность с первого взгляда,они очень просты
13:59Самое важное, имея единый API подобных объектов вы можете их с легкостью рефакторить, менять, взаимозаменять и т.д.
14:01Это как кубики LEGO: 4 дырочки, 4 пимпочки. А внутри могут быть лампочки, колёса и прочая лабуда, вплоть до микросхем
14:02. @rainrb главный урок который я извлек из работы с ним: все можно сделать просто. Если не получается — значит ты не с той стороны зашел
14:20Давайте поговорим за codestyle. Есть ли у вас в команде согласованный стиль? Пользуетесь ли линтерами? pic.twitter.com/uWf5OyR0mq
Возникает ли желание убивать людей из-за неправильных отступов? Ставите ли вы в CI фейл на линтере или статическом анализе?
15:00Меня, к примеру, дико бесил стиль Паттерсона, особенно опускание скобок везде где только возможно
15:14Как-то хотел запилить пулл то-ли в Journey, то-ли в Arel, но так и не смог себя пересилить
15:15В этом плане, появление, а главное, распространение стайлгайда от Батсова было манной небесной. Даже rails стало более-менее ему следовать
15:24Теперь не нужно изучать стиль автора при создании небольшого пулл-реквеста. Мне кажется это очень помогло OSS сообществу
15:26@rubyunderhood с коллегами разгорелся спор:какая логика должна выполняться на сервере, а какая на клиенте. Вы как считаете, исходя из опыта?18:12
Четверг маленькая пятница, тем более я завтра весь день в самолёте. Поэтому скоро начнем время умопомрачительных сказов.
21:13А пока давайте пофилософствуем: представьте что у вас есть возможность отправиться в прошлое, на зарю прогр. карьеры. Что бы вы себе сказали
21:26# Пятница 15 твитов
@rubyunderhood @pasunderhood учи английский язык как можно раньше, больше занимайся своими проектам и рисёрчем новых идей0:37
@rubyunderhood "не бери слишком много на себя"0:37
В общем-то я, кроме английского, посоветовал бы себе учить больше языков программирования и беречь зрение
1:08Тему для умопомрачительных историй я закинуть не успел, поэтому вот вам трек на ночь m.youtube.com/watch?v=Q_9ox2… и посоветуйте аниме в дорогу
1:39Горшочек не вари
2:21Доброе утро! Сегодня день вынужденного радиомолчания. Если есть вопросы — задавайте, вечером отвечу
9:49Если есть кто из Берлина: я свободен на пиво на выходных
9:50Пьёте небось?
21:25Давайте сделаем хитро: если вы собираете дринкапы в своем городе, или хотите их собирать: пишите, а я буду ретвитить
21:33Заодно если вы сейчас где-то пьёте, можно позвать коллег
21:43@artemeff @rubyunderhood Тем проще собрать дринкап. Купил водки - считай, что собрал. 40% всех рубистов, Москве такое не по силам22:11
@rubyunderhood четверг, 15 октября, Минск - первый мит-паб Golang в Беларуси :)22:30
@rubyunderhood Привет, у меня есть интересный вопрос, toster.ru/q/255723 почему мы получаем такое поведение AR? :)23:04
@rubyunderhood Доброе утро! Есть вопрос, насчет статистического анализа русского текста. Чем пользовались и что посоветуете?23:04
@rubyunderhood на следующей неделе организую очередную пивную встречу @moscowrb :)23:49
# Суббота 1 твит
We're live!! The best way to translate your Rails i18n files - check out localehero.com #rails #i18n #localization #ruby
Кто-то у меня за локализацию спрашивал, вот например twitter.com/locale_hero/st…
17:06# Воскресенье 7 твитов
Под конец недели хотелось бы напомнить что глобальный хакатон RailsRumble уже меньше чем через месяц
15:07Тем кто собирается участвовать, самое время собирать команду и генерировать идеи. Тем кто впервые слышит — почитать отчёты о предыдущих RR
15:09Если правильно подойти к подготовке: RailsRumble это очень весело и возможность поговнокодить вволю
15:11. @POS_troi @backendsecret @dukebarman про телеграмм не скажу, есть gitter.im/dev-ua
18:37Наверное пора закруглятся. Спасибо вам, вы отличная аудитория!
19:16С вами эту неделю был @ptico Надеюсь вам понравилось. До встречи на просторах интернетов. Будете в Киеве: заходите в гости
19:18Я устал, я мухожук. Оставляю после себя алоэ
19:19# Ссылки
github.com
- https://github.com/bluerogue251/materialized_views
- https://github.com/Ptico/rspec-sequel_expectations
- https://github.com/Ptico/from-rack-to-rails
- https://github.com/octopress/octopress
- https://github.com/Ptico/rubyunderhood/tree/master/spec/integration/use_cases/user
- https://github.com/solnic/transproc
other
- http://talky.io/
- https://about.gitlab.com/team-pets/
- https://speakerdeck.com/ptico/the-big-the-small-and-the-redis
- http://blog.codeship.com/heroku-data-links-postgres-redis/
- http://pleer.com/tracks/8540920vIkB
- http://pleer.com/tracks/8176886ZUNH
- https://www.youtube.com/watch?v=yuh9COzp5vo
- https://www.youtube.com/watch?v=EYJnWttrC9k&list=PLVjgeV_avap2arug3vIz8c6l72rvh9poV&index=31
- https://www.youtube.com/watch?v=XVfOe5mFbAE
- https://www.youtube.com/watch?v=Oj4vXMRenFo
- http://sequel.jeremyevans.net/documentation.html
- http://sequel.jeremyevans.net/plugins.html
- https://gist.github.com/Ptico/cd61a0628bec90ee6139
- https://gist.github.com/rainrb/f7ee1580968a2c7b0c41
- http://alexfedoseev.com/
- http://goo.gl/Dkg2HF
- http://homeonrails.com/blog/categories/ruby/
- http://youtu.be/hi4pzKvuEQM
- https://m.youtube.com/watch?v=Q_9ox2CNKSw
- https://toster.ru/q/255723
- http://gitter.im/dev-ua