# Понедельник 18 твитов
Всем привет! Эту неделю с Вами Данил Письменный @DAPI, основатель brandymint.ru, техлид в kiiiosk.ru и taasty.com
11:16Буду идти по темам из списка - rubyunderhood.ru/about/
Надеюсь на большое количество вопросов.
Обязательная литература разработчика в команде BrandyMint bit.ly/1Ob5GBy
11:38Когда работаешь в команде становится понятно что ошибаются все, всегда, постоянно, ежедневно.
12:01У человека (условно) 7-9 регистров памяти для оперативной работы. У обезьяны 2-3. Чтобы составить рекурсивное предложение нужно 4-е.
12:05Именно ограниченные возможности оперативной памяти человека являются проблемой в программировании.
12:06С возрастом становится труднее переключать контексты и хранить в голове одновременно много объектов, поэтому начинаешь писать проще и чище
12:07Умение разделять задачи на подзадачи (декомпонирование) важнее, чем знание языка программирования и алгоритмов.
12:11Уверенность в том, что вы пишете на самом лучшем языке программирования говорит о том, что вы не уверенный программист
12:18Мой первый язык программирования на котором вышло коммерческое ПО - Turbo Pascal
12:29Первое что проверяется на собеседовании на должность разработчика - умение понятно излагать мысли. Устно и письменно.
12:32Лучший апгрейд, который получил в за последний год, как техлид, это “Введение с системную инженерию” Левенчука - bit.ly/1N8ad76
15:00Поделитесь ссылкой на одну самую крутую статью/курс/книгу которую вы прочитали в этом году?
15:02Немножко про то как в taaasty.ru полностью отделили верстку, стили и скрипты от основного приложения на ruby - habrahabr.ru/post/271489/
16:05Удивительно, но в SICP-е DDD объясняется примерно за 1 страницу
17:54Чем верификация отличается от валидации (2 минуты) - youtube.com/watch?v=k_UmrT…
18:29# Вторник 23 твита
говорят у летчиков тоже повышенные возможности по одновременному контролю нескольких объектов - 7-9. @Timrael
9:37Раньше думал что архитектура это что-то про сервера, сейчас вижу что это больше про интерфейсы, взаимодействие, функции.
9:42Задачи стараюсь делить на 1-2 часовые отрезки и принимать малыми реквестами. Казалось бы простая практика, но многим дается с большим трудом
9:45Не доверяю программистам с пустым github-ом. "У меня все на bitbucket" - звучит как-то не убедительно..
10:08Две самые не заменимые утилитки техлида под iOS - github.com/ptsochantaris/… и ccmenu.org
10:10Сейчас стало модно ругать рельсы. В следующем году Ruby это будет такой угрюмый PHP. А, между прочим, архитектурные решения в PHP сильнее.
10:22Во всех проектах используем CodeClimate. Хотя и заглядываем в него редко. Средний уровень качества ~3.5 балла.
10:31teamcity - CI-сервер за который не жалко заплатить. У нас он билдит приложения под мобилки, мониторит, совершает автодеплой, тесты самособой
10:52Книгу по паттернам проектирования купил в 98-м году, освоил где-то в 2012-м и только благодаря общению с коллегами и специфичным задачам.
11:55Есть большой пласт знаний не передаваемый в цифровое-бумажных носителях. Никакие форумы и книги не заменят живого общения.
11:55На мой взгляд лучшая технология, которая пришла в веб-разработку за последнии 2-а года это ReactJS
12:02PHP более строгий язык, как результат лучше продумываешь решения. Да, Symfony (работа с формами например), Doctrine @vassilevsky
12:19За последний год существенно повлияли на проф. мировозрение: @alexanderbyndyu blog.byndyu.ru, @mokevnin, @niquola, @tonsky
13:30Кто чем пользуется для PORO? Мы сидим на github.com/solnic/virtus
13:55Кстати о формах. Подборка решений и статей о From Object-ов в #ruby - evernote.com/shard/s8/sh/40…
13:59А кто знает конкретное определение что такое Form Object? Кто его ввел и когда?
14:16Тогда почему это не Validation Object? @artofhuman
16:03У формы есть: способы отображения, валидация на бакене и на фронте, объект хранящий данные, процесс обрабатывающий эти данные @artofhuman
16:03не понятно где заканчивается и где начинается from object @artofhuman
16:03Выбор технологии или методологии это всегда компромис. Модель принятия решений в разработке ПО - dotnetconf.ru/materialy/desi…
16:11Почему форма должна обрабатывать данные? Одни и те-же данные могут обрабатываться разными способами @artofhuman
16:13кроме того одну и туже форму можно валидировать в разных случаях по-разному @artofhuman
16:17# Среда 35 твитов
Сейчас у программистов в моде называть себя инженерами. Но, чаще встречаются программирующие операторы ЭВМ с не скрываемой манией величия
9:14В начале 2000-х делал проекты на собственном MVC движке на Perl - github.com/dapi/el-perl
Eсли бы не рельсы, я бы его до сих пор пилил..
9:16о других проще судить по себе @rubyunderhood
9:23Думаю, что рельсы хороши для быстрых проектов благодаря ActiveRecord. Последний-же является причиной большинства архитектурных косяков.
9:25Однажды проект отдали на оценку двум ruby-экспертам. Оба забраковали. 1-й потому что в проекте очень много gem-ов. 2-й потому что очень мало
9:28Не понимаю желание и хвастовство делать веб-проекты на голом Ruby, без Rails. Просто не используй ActiveRecord и gem devise
9:34Есть ощущение, что все эти плагины под рельсы убивают понимание того как писать код для общего использование и делать нормальные библиотеки
9:37#ruby Очень заценили github.com/rails/globalid
9:39Первое правило прототипирования в разработке ПО - выкидывать нафиг прототип после использования.
9:39Иногда, изменяя свой старый код, ощущаю что корректирую искаженное описание воображаемой реальности незнакомого разработчика из прошлой эры
9:44Спускаешься такой по лестнице, а она социальная.9:46
Если у вас в проекте все в порядке, значит у вас плохо настроен мониторинг.
9:48Выглядит многообещающе. Планирую в следующем проекте попробовать @endurance73
9:50в принципе сейчас и с AR нормально, только всю логику, действия, запросы, билды и представления выделили в отдельные объекты @endurance73
9:52С подозрением отношусь к разработчикам с IDE. Ничего не могу с этим поделать. Стереотипы.
10:07А не постигнет ли ruby участь smalktalk?
10:13с подозрением отношусь к разработчикам на scala/java. Ничего не могу с собой поделать. Стереотипы ) @artemeff
10:14Работаю на ОSX через Terminal -> SSH -> Tmux -> Vim на сервере. Мак, используется только как терминал и браузер. pic.twitter.com/eE2kwKcydx
согласен, это, наверное, ощущение из 90-х @artemeff @TheSunwave
10:21Сидел за компом по 12-16 часов. 6 лет назад появилась грыжа межпозвоночного диска 7-9 мм, 2 года работал лежа, готовился к операции.
10:28Восстановился:
10:32Теперь не сижу не больше рабочего дня, иногда работаю стоя или на стуле без упора на крестец pic.twitter.com/DXKIVlyrK7
@rubyunderhood а для меня всегда подозрительным казался отказ от ide :D10:38
В прошлом отпуске сломался macbook, пришлось работать через ipad + bluetooth клавиатура. Ничего не изменилось, тот-же ssh, tmux на сервере..
10:40Только российский ssh-клиент на ipad периодически терял соединение при переходе в браузер. А хороший не доступен в AppStore из-за санкций
10:42влюбился в руби когда услышал о том, что автор решил сделать язык программирования для людей, а не для компьютеров @as_Crazy
10:43Кстати мануальщики эффективны с межпозвоновной грыжей только на острой стадии, дальше её победить можно только наращивая мышечный корсет
10:47В тестах ценю, в первую очередь, описание спецификации (того как должно работать). Тесты важны как описание, база данных требований.
11:26ага, дома на таком мяче сижу. В офисе не прижился, потому что мусор с пола прилипает @mgrachev
11:47Выдержка из Gemfile pic.twitter.com/VW4qUR5LjM
Александр Кириллов. Ruby Object Mapper: revolution youtu.be/NYsnTEcoq9Y с помощью @YouTube22:01
# Четверг 57 твитов
Как часто используете inherited_resources?
8:49читать больше фундаментального docs.google.com/document/d/1uh… @pinyslutty
18:233 дня активно твиттерил и не понимаю когда другие таи-активисты успевают работать?
18:24Первые 6 лет программистской деятельности (92-98) практические не получал зарплаты, даже не думал. Был благодарен за то, что дали поработать
18:28Мои ходки: Turbo Pascal 6 лет, C/C++ 3 года, PHP 2 года, Perl 6 лет, Ruby 5 лет. Два раза бросал компьютеры, насовсем. Хватало на пару лет..
18:31В 2004 написал биллинг для ISP. Чтобы его проверить организовал домовую сеть orionet.ru, через 4 года оборот $1млн и не до программирования
18:34потом все задрало и я её продал, не совсем удачно. Так я стал ruby-программистом )
18:35Руководитель с меня не очень. Я если чего-то непосредственно своими руками не делаю, то мне кажется что я бездельник.
18:37Люди не машины, ими не возможно управлять. Управлять можно проектами, процессами, ресурсами. Можно корректировать свое поведение и отношение
18:38Если кратко самое главное правило менеджера что я для себя открыл - с людьми нужно разговаривать и не только по работе ;)
18:39После продажи компании решил проапгрейдиться в менеджменте, а так-как лучший способ научиться это начать обучать самому, то..
18:43.. разработал свой курс бизнес-тренингов (организационный менеджмент, целедостижение) год зарабатывал этим.
18:43из проходящих тренинг 30% увольнялись с работы уже в течении курса. Еще 30% увеличивали результаты у остальных ничего не изменялось.
18:44Лично в Ruby уже 2-й год ощущаю тупик. Возбуждает Clojure, времени не хватает. Увлекают стартапы, прокачиваюсь в продвижении и привлечении
18:59ничего нового. В целом многое устраивает, но хочется драйва, открытий и простых решений. Не обязательно быстрых, но простых @igor_alexandrov
19:57Однажды в компанию пригласил тренера по личностному росту. Через 2 недели тренигов уволилось 30% сотрудников - стали предпринимателями.
20:02А вы знаете и применяете SMART(ER)?
20:07@rubyunderhood @POS_troi посмотри плиз инструкцию как реплаить jsunderhood.ru/instruction/20:11
спасибо, за инструкцию @iamstarkov @POS_troi
20:11Только что заметил, что проекты становятся больше, а общее количество gem-ов в них меньше.
20:17kiiiosk.ru стартанули с применением Array и HSTORE в PostgreSQLl. Но за год жизни избавились от этого всего в пользу обычных таблиц, EAV
20:21В 2011-м написали gem bitrix_on_rails для доступа к замысловатым битриксовым инфоблокам мимикрируя под ActiveRecord, но продвигать не стали
20:24Функциональные программисты — они как веганы.21:29
худые? @Soukhinov @mogilnikov
21:29На мой взгляд, популярность функционального программирования заключается в чувстве избранности, которым обладают его приверженцы.21:29
слово "функционального" не обязательно @Soukhinov
21:30думаю то был частный случай, но с неймспейсами, на самом деле нужно разобраться. Есть хорошие примеры? @tanraya
21:30SMART это мощно, рассказываю - bit.ly/1Q183XE
21:34В програм-нии так со всем, тот-же Ruby когда-то. Думаю это такие сигналы, мол вот я какой, легко осваиваю новинки @mogilnikov @Soukhinov
21:39@rubyunderhood Это вроде НЛП, нет?21:40
Нет, просто системно-аналитический подход. Провели декомпозицию задачи "Постановка цели" @pinyslutty
21:42@rubyunderhood @pismenny Ты когда нетехническую аббревиатуру приводишь — упоминай контекст. Я был уверен, что это технология какая-то.21:42
@rubyunderhood Например, Person::Career -> таблица person_careers, я не использую никаких префиксов21:47
напрягает что Person (класс, модель) становится неймспейсом (модулем). Мне вот такая неоднозначность в рубях как раз не нравится @tanraya
21:49@rubyunderhood а Go?21:53
Такого взрыва мозга как от Clojure не было, да и вообще никакого не было. Вполне возможно что не докапал. @vassilevsky
21:54@rubyunderhood ФП совсем не новинка ведь, оно старше ООП. Просто за ФП стоят чуть более сложные идеи, а от этого легко впасть в снобизм.21:55
С ООП, в последнее время, есть стойкое ощущение что нас где-то на..ли @mogilnikov
21:56Об MVC-то миф уже давно развенчан - youtube.com/watch?v=WpkDN7… , а вот ООП все еще трепыхается @mogilnikov
21:59В новых проектах никаких наследований (кроме рельсовых ApplicationController) не применяем. Только миксины. Комфортно.
22:02Котаны, еще один важный опрос 👇22:09
ZZ конечно @Shiroginne
22:10Кто-то решал проблему того что validates uniqueness, на самом деле, не гарантирует уникальность?
22:31из минусов зависимость одних миксинов от других, иногда нужно учитывать порядок include @si_manana
22:40@rubyunderhood constraint и отлов исключения22:40
ага, но это добавляет костылей переработки этого исключения в псевдо-результат валидации для нормального отображения в форме. @ptico
22:42получается так как исключение все равно ловить надо, то в валидации этой нет никакого смысла ) @ptico
22:42@rubyunderhood ну в общем-то да) Опять таки, для многих вещей важен как раз lowercase, что тоже не отлавливается23:03
@rubyunderhood а если пойти дальше, то для email еще нужно отсекать часть с +23:10
@rubyunderhood а что за проблема?23:11
В AR между валидацией и собственно изменениями в базе есть момент, в который параллельный процесс может создать подобную запись @achempion
23:13# Пятница 34 твита
3 стадии внедрения inherited_resource:
0:22Если честно, злорадно надеялся что ReactJS не получит массового применения и останется хорошим конкурентным преимуществом
0:23@rubyunderhood @tanraya в частности учитывая что Class является потомком Module :)8:28
так все является потомком Object, но это же не повод вводить неразбериху при чтении кода @rainrb @tanraya
8:29@anton_davydov @rubyunderhood книжка рeально офигeнная. Нe ожидал такого от microsoft press8:29
@rubyunderhood почему?8:30
как-то временем потерялся профит и появилась куча костылей, которые легко решаются когда данные нормализованы по табличкам @artemeff
8:31Прекращайте передавать данные из контроллера во вью через инстанс-переменные - bit.ly/1Snwfmi
8:35@rubyunderhood @tanraya ну уж не знаю где тут неразбериха:) Всегда и везде все стараюсь неймспейсить ибо любые пространства имен — добро8:37
Неймспейсы конечно добро. Модель в качестве неймспейса - лично мне не нравится. Скорее всего это дело вкуса. @rainrb @tanraya
8:39Например неймспейс Moysklad, и вот там лежат и модели и сервисы и контроллеры по этой тематике это норм, такое есть @tanraya
8:41В какой момент код становится legacy? Когда попадает в продакшен, в репозиторий или когда сохраняется в файловой системе?
9:20@rubyunderhood когда начинаешь думать, что проще переписать, чем поддерживать, но менеджмент против10:15
Менеджмент вообще не стоит ставить перед выбором переписать/не переписать. Проще рефактор включать в сроки @zhulikgleb
10:19@rubyunderhood @artemeff а как это у вас EAV без костылей? Лучшее что я видел это hydra_attribute, и оно ужасно выглядит в БД.10:19
У нас не смешиваются прямые атрибуты и EAV атрибуты. EAV выделены в отдельное свойство (custom_attributes) @as_Crazy @artemeff
10:28custom_attributes возвращает объект класса CustomAttributes содержащий список типизированных свойств @as_Crazy @artemeff
10:29Причины избавления от ARRAY и HSTORE: 1. Нет foreign key и нормальных join-оы; 2. Появление свойств у хранимых данных @rubyunderhood
10:34Самый развитый EAV на стероидах что встречал - у 1С Битрикс (Инфоблоки) @rubyunderhood
10:39Салфетка как критерий хорошо читаемого кода - bit.ly/1Nbwht9
10:42@rubyunderhood бывает, что рефакторинг невозможен или слишком долгий11:06
если рефактор не экономит ресурсы то зачем его делать? К менеджеру с таким тем более подходить нельзя @zhulikgleb
11:06Сегодня поговорим о фреймворках. pic.twitter.com/ld0Kkx7tXU11:07![]()
Все таки React это не фреймворк @jsunderhood
11:07@rubyunderhood А как быть, если используешь респондеры (responders gem)? Есть пример?14:00
@rubyunderhood @achempion Я кстати не отлавливаю это исключение. У меня констрейнт на таблице. Все равно шанс эксепшена минимален.14:01
в taaasty.com примерно 1200 подобных событий в месяц @tanraya @achempion
14:02@rubyunderhood @tanraya это при каком rpm? и как решаете, уникальный индекс?14:03
Очень люблю PivotaTtracker. Если в команде постоянно работает 4-5 человек, то планирование на 2-3 месяца вычисляется с точностью до недели
17:1217 лет ушло на то, чтобы отучиться деплоиться по пятницам. Спринты у нас заканчиваются в понедельник. Пятница это где-то середина итерации
17:38# Ссылки
bit.ly
- http://bit.ly/1Ob5GBy
- http://bit.ly/1N8ad76
- http://bit.ly/1Q183XE
- http://bit.ly/1Snwfmi
- http://bit.ly/1Nbwht9
other
- http://taasty.com/
- https://rubyunderhood.ru/about/
- http://habrahabr.ru/post/271489/
- https://www.youtube.com/watch?v=k_UmrT9JBjk
- https://www.youtube.com/watch?v=WpkDN78P884
- https://github.com/ptsochantaris/trailer
- https://github.com/solnic/virtus
- https://github.com/dapi/el-perl
- https://github.com/rails/globalid
- http://ccmenu.org/
- http://blog.byndyu.ru/
- https://www.evernote.com/shard/s8/sh/40214637-b7b4-4955-a7ce-d3110102f6a6/4dc21e28153d8e49bcd83e80ebc4cb0f
- http://dotnetconf.ru/materialy/design_process_models
- https://goo.gl/EZSbMb
- http://www.us-medica.ru/healthyback/zero.php
- https://youtu.be/NYsnTEcoq9Y
- https://docs.google.com/document/d/1uhp-pI-mpoMc5_9bIRMvcfODn1avvkNOp7uiIqaGSUg/edit
- https://jsunderhood.ru/instruction/
- http://taaasty.com/