pismenny

23 ноября 2015, Cheboksary

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

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

8:16

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

8:20

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

8:38

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

9:01

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

9:05

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

9:06

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

9:07

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

9:11

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

9:18

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

9:22

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

9:29

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

9:30

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

9:32

Лучший апгрейд, который получил в за последний год, как техлид, это “Введение с системную инженерию” Левенчука - bit.ly/1N8ad76

12:00

Поделитесь ссылкой на одну самую крутую статью/курс/книгу которую вы прочитали в этом году?

12:02

Немножко про то как в taaasty.ru полностью отделили верстку, стили и скрипты от основного приложения на ruby - habrahabr.ru/post/271489/

13:05

Удивительно, но в SICP-е DDD объясняется примерно за 1 страницу

14:54

Чем верификация отличается от валидации (2 минуты) - youtube.com/watch?v=k_UmrT…

15:29

# Вторник 23 твита

говорят у летчиков тоже повышенные возможности по одновременному контролю нескольких объектов - 7-9. @Timrael

6:37

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

6:42

Задачи стараюсь делить на 1-2 часовые отрезки и принимать малыми реквестами. Казалось бы простая практика, но многим дается с большим трудом

6:45

Не доверяю программистам с пустым github-ом. "У меня все на bitbucket" - звучит как-то не убедительно..

7:08

Две самые не заменимые утилитки техлида под iOS - github.com/ptsochantaris/… и ccmenu.org

7:10

Сейчас стало модно ругать рельсы. В следующем году Ruby это будет такой угрюмый PHP. А, между прочим, архитектурные решения в PHP сильнее.

7:22

Во всех проектах используем CodeClimate. Хотя и заглядываем в него редко. Средний уровень качества ~3.5 балла.

7:31

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

7:42

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

7:52

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

8:55

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

8:55

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

9:02

PHP более строгий язык, как результат лучше продумываешь решения. Да, Symfony (работа с формами например), Doctrine @vassilevsky

9:19

За последний год существенно повлияли на проф. мировозрение: @alexanderbyndyu blog.byndyu.ru, @mokevnin, @niquola, @tonsky

10:30

Кто чем пользуется для PORO? Мы сидим на github.com/solnic/virtus

10:55

Кстати о формах. Подборка решений и статей о From Object-ов в #ruby - evernote.com/shard/s8/sh/40…

10:59

А кто знает конкретное определение что такое Form Object? Кто его ввел и когда?

11:16

Тогда почему это не Validation Object? @artofhuman

13:03

У формы есть: способы отображения, валидация на бакене и на фронте, объект хранящий данные, процесс обрабатывающий эти данные @artofhuman

13:03

не понятно где заканчивается и где начинается from object @artofhuman

13:03

Выбор технологии или методологии это всегда компромис. Модель принятия решений в разработке ПО - dotnetconf.ru/materialy/desi…

13:11

Почему форма должна обрабатывать данные? Одни и те-же данные могут обрабатываться разными способами @artofhuman

13:13

кроме того одну и туже форму можно валидировать в разных случаях по-разному @artofhuman

13:17

# Среда 35 твитов

Сейчас у программистов в моде называть себя инженерами. Но, чаще встречаются программирующие операторы ЭВМ с не скрываемой манией величия

6:14

В начале 2000-х делал проекты на собственном MVC движке на Perl - github.com/dapi/el-perl

Eсли бы не рельсы, я бы его до сих пор пилил..

6:16

о других проще судить по себе @rubyunderhood

6:23

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

6:24

Думаю, что рельсы хороши для быстрых проектов благодаря ActiveRecord. Последний-же является причиной большинства архитектурных косяков.

6:25

Однажды проект отдали на оценку двум ruby-экспертам. Оба забраковали. 1-й потому что в проекте очень много gem-ов. 2-й потому что очень мало

6:28

Не понимаю желание и хвастовство делать веб-проекты на голом Ruby, без Rails. Просто не используй ActiveRecord и gem devise

6:34

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

6:37

#ruby Очень заценили github.com/rails/globalid

6:39

Первое правило прототипирования в разработке ПО - выкидывать нафиг прототип после использования.

6:39

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

6:44
Спускаешься такой по лестнице, а она социальная.
6:46

Если у вас в проекте все в порядке, значит у вас плохо настроен мониторинг.

6:48

Выглядит многообещающе. Планирую в следующем проекте попробовать @endurance73

6:50

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

6:52

С подозрением отношусь к разработчикам с IDE. Ничего не могу с этим поделать. Стереотипы.

7:07

А не постигнет ли ruby участь smalktalk?

7:13

с подозрением отношусь к разработчикам на scala/java. Ничего не могу с собой поделать. Стереотипы ) @artemeff

7:14

Работаю на ОSX через Terminal -> SSH -> Tmux -> Vim на сервере. Мак, используется только как терминал и браузер. pic.twitter.com/eE2kwKcydx

7:20

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

7:21

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

7:28

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

7:32

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

7:36

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

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

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

7:40

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

7:42

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

7:43

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

7:47

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

7:47

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

8:26

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

8:47

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

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

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

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

5:49

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

15:23

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

15:24

Первые 6 лет программистской деятельности (92-98) практические не получал зарплаты, даже не думал. Был благодарен за то, что дали поработать

15:28

Мои ходки: Turbo Pascal 6 лет, C/C++ 3 года, PHP 2 года, Perl 6 лет, Ruby 5 лет. Два раза бросал компьютеры, насовсем. Хватало на пару лет..

15:31

В 2004 написал биллинг для ISP. Чтобы его проверить организовал домовую сеть orionet.ru, через 4 года оборот $1млн и не до программирования

15:34

потом все задрало и я её продал, не совсем удачно. Так я стал ruby-программистом )

15:35

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

15:35

Руководитель с меня не очень. Я если чего-то непосредственно своими руками не делаю, то мне кажется что я бездельник.

15:37

Люди не машины, ими не возможно управлять. Управлять можно проектами, процессами, ресурсами. Можно корректировать свое поведение и отношение

15:38

Если кратко самое главное правило менеджера что я для себя открыл - с людьми нужно разговаривать и не только по работе ;)

15:39

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

15:43

.. разработал свой курс бизнес-тренингов (организационный менеджмент, целедостижение) год зарабатывал этим.

15:43

из проходящих тренинг 30% увольнялись с работы уже в течении курса. Еще 30% увеличивали результаты у остальных ничего не изменялось.

15:44

Лично в Ruby уже 2-й год ощущаю тупик. Возбуждает Clojure, времени не хватает. Увлекают стартапы, прокачиваюсь в продвижении и привлечении

15:59

ничего нового. В целом многое устраивает, но хочется драйва, открытий и простых решений. Не обязательно быстрых, но простых @igor_alexandrov

16:57

Однажды в компанию пригласил тренера по личностному росту. Через 2 недели тренигов уволилось 30% сотрудников - стали предпринимателями.

17:02

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

17:06

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

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

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

17:11

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

17:17

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

17:21

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

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

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

18:30

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

18:30

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

18:34

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

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

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

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

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

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

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

18:49

Такого взрыва мозга как от Clojure не было, да и вообще никакого не было. Вполне возможно что не докапал. @vassilevsky

18:54
@rubyunderhood ФП совсем не новинка ведь, оно старше ООП. Просто за ФП стоят чуть более сложные идеи, а от этого легко впасть в снобизм.
18:55

С ООП, в последнее время, есть стойкое ощущение что нас где-то на..ли @mogilnikov

18:56

Об MVC-то миф уже давно развенчан - youtube.com/watch?v=WpkDN7… , а вот ООП все еще трепыхается @mogilnikov

18:59

В новых проектах никаких наследований (кроме рельсовых ApplicationController) не применяем. Только миксины. Комфортно.

19:02
Котаны, еще один важный опрос 👇
19:09

ZZ конечно @Shiroginne

19:10

Кто-то решал проблему того что validates uniqueness, на самом деле, не гарантирует уникальность?

19:31

из минусов зависимость одних миксинов от других, иногда нужно учитывать порядок include @si_manana

19:40
@rubyunderhood constraint и отлов исключения
19:40

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

19:42

получается так как исключение все равно ловить надо, то в валидации этой нет никакого смысла ) @ptico

19:42
@rubyunderhood ну в общем-то да) Опять таки, для многих вещей важен как раз lowercase, что тоже не отлавливается
20:03

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

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

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

20:10
@rubyunderhood а что за проблема?
20:11

В AR между валидацией и собственно изменениями в базе есть момент, в который параллельный процесс может создать подобную запись @achempion

20:13

3 стадии внедрения inherited_resource:

21:22

Если честно, злорадно надеялся что ReactJS не получит массового применения и останется хорошим конкурентным преимуществом

21:23

# Пятница 32 твита

@rubyunderhood @tanraya в частности учитывая что Class является потомком Module :)
5:28

так все является потомком Object, но это же не повод вводить неразбериху при чтении кода @rainrb @tanraya

5:29
@anton_davydov @rubyunderhood книжка рeально офигeнная. Нe ожидал такого от microsoft press
5:29
@rubyunderhood почему?
5:30

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

5:31

Прекращайте передавать данные из контроллера во вью через инстанс-переменные - bit.ly/1Snwfmi

5:35
@rubyunderhood @tanraya ну уж не знаю где тут неразбериха:) Всегда и везде все стараюсь неймспейсить ибо любые пространства имен — добро
5:37

Неймспейсы конечно добро. Модель в качестве неймспейса - лично мне не нравится. Скорее всего это дело вкуса. @rainrb @tanraya

5:39

Например неймспейс Moysklad, и вот там лежат и модели и сервисы и контроллеры по этой тематике это норм, такое есть @tanraya

5:41

В какой момент код становится legacy? Когда попадает в продакшен, в репозиторий или когда сохраняется в файловой системе?

6:20
@rubyunderhood когда начинаешь думать, что проще переписать, чем поддерживать, но менеджмент против
7:15

Менеджмент вообще не стоит ставить перед выбором переписать/не переписать. Проще рефактор включать в сроки @zhulikgleb

7:19
@rubyunderhood @artemeff а как это у вас EAV без костылей? Лучшее что я видел это hydra_attribute, и оно ужасно выглядит в БД.
7:19

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

7:23

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

7:28

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

7:29

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

7:30

Причины избавления от ARRAY и HSTORE: 1. Нет foreign key и нормальных join-оы; 2. Появление свойств у хранимых данных @rubyunderhood

7:34

Самый развитый EAV на стероидах что встречал - у 1С Битрикс (Инфоблоки) @rubyunderhood

7:39

Салфетка как критерий хорошо читаемого кода - bit.ly/1Nbwht9

7:42
@rubyunderhood бывает, что рефакторинг невозможен или слишком долгий
8:06

если рефактор не экономит ресурсы то зачем его делать? К менеджеру с таким тем более подходить нельзя @zhulikgleb

8:06
Сегодня поговорим о фреймворках. pic.twitter.com/ld0Kkx7tXU
8:07

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

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

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

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

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

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

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

14:12

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

14:38

bit.ly

other