pismenny

23 ноября 2015, Cheboksary

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

Всем привет! Эту неделю с Вами Данил Письменный @DAPI, основатель brandymint.ru, техлид в kiiiosk.ru и taasty.com

11:16

Буду идти по темам из списка - rubyunderhood.ru/about/
Надеюсь на большое количество вопросов.

11:20

Обязательная литература разработчика в команде BrandyMint bit.ly/1Ob5GBy

11:38

Когда работаешь в команде становится понятно что ошибаются все, всегда, постоянно, ежедневно.

12:01

У человека (условно) 7-9 регистров памяти для оперативной работы. У обезьяны 2-3. Чтобы составить рекурсивное предложение нужно 4-е.

12:05

Именно ограниченные возможности оперативной памяти человека являются проблемой в программировании.

12:06

С возрастом становится труднее переключать контексты и хранить в голове одновременно много объектов, поэтому начинаешь писать проще и чище

12:07

Умение разделять задачи на подзадачи (декомпонирование) важнее, чем знание языка программирования и алгоритмов.

12:11

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

12:18

ошибся ником в профиле, правильный @pismenny, а dapi я на github-е @artemeff

12:22

Мой первый язык программирования на котором вышло коммерческое ПО - Turbo Pascal

12:29

ошибся ником, правильный - @pismenny, а dapi на github - http:://github.com/dapi/

12:30

Первое что проверяется на собеседовании на должность разработчика - умение понятно излагать мысли. Устно и письменно.

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:31

давай задачу, разобью её на мелкие отрезки @inem

10:42

teamcity - CI-сервер за который не жалко заплатить. У нас он билдит приложения под мобилки, мониторит, совершает автодеплой, тесты самособой

10:52

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

11:55

Есть большой пласт знаний не передаваемый в цифровое-бумажных носителях. Никакие форумы и книги не заменят живого общения.

11:55

На мой взгляд лучшая технология, которая пришла в веб-разработку за последнии 2-а года это ReactJS

12:02

PHP более строгий язык, как результат лучше продумываешь решения. Да, 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

react пробуждает любовь @damirca @Fodoj

9:24

Думаю, что рельсы хороши для быстрых проектов благодаря 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

10:20

согласен, это, наверное, ощущение из 90-х @artemeff @TheSunwave

10:21

Сидел за компом по 12-16 часов. 6 лет назад появилась грыжа межпозвоночного диска 7-9 мм, 2 года работал лежа, готовился к операции.

10:28

Восстановился:

10:32

Теперь не сижу не больше рабочего дня, иногда работаю стоя или на стуле без упора на крестец pic.twitter.com/DXKIVlyrK7

10:36

спасибо, открыл @bobishh

10:37
@rubyunderhood а для меня всегда подозрительным казался отказ от ide :D
10:38

В прошлом отпуске сломался macbook, пришлось работать через ipad + bluetooth клавиатура. Ничего не изменилось, тот-же ssh, tmux на сервере..

10:40

Только российский ssh-клиент на ipad периодически терял соединение при переходе в браузер. А хороший не доступен в AppStore из-за санкций

10:42

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

10:43

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

10:47

сама идея была, для меня откровением @as_Crazy

10:47

В тестах ценю, в первую очередь, описание спецификации (того как должно работать). Тесты важны как описание, база данных требований.

11:26

ага, дома на таком мяче сижу. В офисе не прижился, потому что мусор с пола прилипает @mgrachev

11:47

Выдержка из Gemfile pic.twitter.com/VW4qUR5LjM

15:28
Александр Кириллов. Ruby Object Mapper: revolution youtu.be/NYsnTEcoq9Y с помощью @YouTube
22:01

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

Как часто используете inherited_resources?

8:49

читать больше фундаментального docs.google.com/document/d/1uh… @pinyslutty

18:23

3 дня активно твиттерил и не понимаю когда другие таи-активисты успевают работать?

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

первый раз влюбился и не помню, второй раз вроде как бизнесом @mr_The

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

О том и речь. Ребятам помог это точно ) @POS_troi

20:06

А вы знаете и применяете SMART(ER)?

20:07
@rubyunderhood @POS_troi посмотри плиз инструкцию как реплаить jsunderhood.ru/instruction/
20:11

спасибо, за инструкцию @iamstarkov @POS_troi

20:11

Только что заметил, что проекты становятся больше, а общее количество gem-ов в них меньше.

20:17

kiiiosk.ru стартанули с применением Array и HSTORE в PostgreSQLl. Но за год жизни избавились от этого всего в пользу обычных таблиц, EAV

20:21

В 2011-м написали gem bitrix_on_rails для доступа к замысловатым битриксовым инфоблокам мимикрируя под ActiveRecord, но продвигать не стали

20:24
Функциональные программисты — они как веганы.
21:29
На мой взгляд, популярность функционального программирования заключается в чувстве избранности, которым обладают его приверженцы.
21:29

слово "функционального" не обязательно @Soukhinov

21:30

думаю то был частный случай, но с неймспейсами, на самом деле нужно разобраться. Есть хорошие примеры? @tanraya

21:30

SMART это мощно, рассказываю - bit.ly/1Q183XE

21:34

В програм-нии так со всем, тот-же Ruby когда-то. Думаю это такие сигналы, мол вот я какой, легко осваиваю новинки @mogilnikov @Soukhinov

21:39
@rubyunderhood Это вроде НЛП, нет?
21:40

Нет, просто системно-аналитический подход. Провели декомпозицию задачи "Постановка цели" @pinyslutty

21:42
@rubyunderhood @pismenny Ты когда нетехническую аббревиатуру приводишь — упоминай контекст. Я был уверен, что это технология какая-то.
21:42

чуть стул не загорелся в ожидании новой технологи? ) @Semenov @pismenny

21:43
@rubyunderhood Например, Person::Career -> таблица person_careers, я не использую никаких префиксов
21:47

напрягает что Person (класс, модель) становится неймспейсом (модулем). Мне вот такая неоднозначность в рубях как раз не нравится @tanraya

21:49

Такого взрыва мозга как от 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

для email-ов еще и strip @ptico

23:03
@rubyunderhood а если пойти дальше, то для email еще нужно отсекать часть с +
23:10

это не честно ) @ptico

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 press
8: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

иду смотреть hydra_attribute ) @as_Crazy @artemeff

10:23

У нас не смешиваются прямые атрибуты и EAV атрибуты. EAV выделены в отдельное свойство (custom_attributes) @as_Crazy @artemeff

10:28

custom_attributes возвращает объект класса CustomAttributes содержащий список типизированных свойств @as_Crazy @artemeff

10:29

как только избавились от meta-программирования сразу пропали костыли @as_Crazy @artemeff

10:30

Причины избавления от 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/ld0Kkx7tXU
11:07

Все таки React это не фреймворк @jsunderhood

11:07
@rubyunderhood А как быть, если используешь респондеры (responders gem)? Есть пример?
14:00

не используем, не знаю почему @tanraya

14:00
@rubyunderhood @achempion Я кстати не отлавливаю это исключение. У меня констрейнт на таблице. Все равно шанс эксепшена минимален.
14:01

в taaasty.com примерно 1200 подобных событий в месяц @tanraya @achempion

14:02
@rubyunderhood @tanraya это при каком rpm? и как решаете, уникальный индекс?
14:03

Очень люблю PivotaTtracker. Если в команде постоянно работает 4-5 человек, то планирование на 2-3 месяца вычисляется с точностью до недели

17:12

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

17:38

bit.ly

other