[Из песочницы] Опыт программирования на Юниксе*
Под программированием понимается собственно процесс программирования на С для мелких микроконтроллеров, а также трассировка печатных плат, рисование моделек в Солиде, редактирование доков в Офисе, чтение интернета и написание этой заметки.
Вот это устройство UNIX FIT MX-450V, или кратко — *ЮНИКС, на котором и осуществляется процесс программирования.
Вообще, всё вместе это 1001-е выступление на тему «о правильном рабочем месте программиста». Все составные части девайса многократно описаны в литературе, никаких революционных свершений не предлагается, зато приведен в целом успешный опыт инсталляции и использования. Устройство классическое — подъёмный стол и под ним беговая дорожка. Фотки — частично из сети, частично из моей рабочей берлоги, заранее прошу прощения за невысокое качество — условия тотальной захламленности + убогое освещение + я, увы, не фотограф совсем. Под катом — множество подробностей, включающих вивисекцию невинных железочек с элементами колхоза.
Обоснование
С возрастом я узнал много плохих слов: геморрой, аденома простаты, остеохондроз поясничного отдела позвоночника, стенокардия, аритмия и просто бессонница. Это вовсе не значит, что довелось в полной мере испытать все их прелести, и у меня нет убедительных научных фактов, подтверждающих их непременное появление от сидячего образа жизни. Однако, смутные субъективные ощущения иногда мотивируют сильнее железобетонных логических аргументов. Настала время, когда с этим пора уже что-то делать.
Впрочем, для сильных и волевых мужчин, готовых каждые 45 минут вскакивать и выполнять производственную гимнастику, а также трижды в неделю посещать спортзал, всё что я дальше написал, наверно не так актуально.
Выбор исходников
Начиная выбирать беговую дорожку, я столкнулся с тем, что для неподготовленного юзера они все одинаковы и как их выбирать непонятно. При ближайшем знакомстве с продаванами выяснилось, что они также совершенно не в курсе чем торгуют, и после того, как узнают, что мой вес не больше 100 кг, и что нужна именно электрическая, а не механическая дорожка, (на этом все их классификационные признаки заканчиваются) так сразу вянут и переходят к классическому — берите что понравилось.
Мне понравился именно ЮНИКС по следующим соображениям:
- Минимальная начальная скорость = 0,8 км/час. Это важно, так как я программирую уже не так быстро, и большая часть программирования происходит со скоростью до 1 км/час. Не все дорожки умеют так медленно.
- У ЮНИКСа есть электрическое изменение угла наклона поверхности. Пока не часто этим пользуюсь, но идея куда-то лазить под стол и что-то там регулировать вручную в процессе программирования, мне представляется абсолютно исключающей вообще тему изменения наклона.
- Конструктив ЮНИКСа легко разбираемый — это очень важно, так как руки на него накладывать неизбежно придется, и очень радует, что все обходится кручением гвоздей, без применения болгарки и сварочника.
- Замечательная ручка на корме для подъёма девайса в вертикальное положение. За неё же очень удобно таскать ЮНИКС, когда под ним пылесосят. Пустячок, но очень приятный.
- Название. Признаюсь честно, эмоциональный компонент в выборе тоже присутствовал.
Со столом проще.
Простейший запрос «стол с электроприводом» выкатывает замечательные конторы, в одной из которых и был взят «Ergostol Duo», управляемый тремя кнопками: «вверх», «вниз», и «пожалуйста разрешите мне прямо сейчас подвигать этот стол» (круглая).
Чтобы не тянуть, — вот общая компоновка при первоначальном тестировании.
Очевидно, что места занимается совсем немного. Слева — книжные шкафы, справа — стол с паяльником, напильником, осциллографом и сопутствующим хламом. (Там работать на ЮНИКСе почему-то не получается.)
Инсталляция и настройка
Инсталляция ЮНИКСа начинается с обламывания ему рогов, с ними он под стол не залезет. К счастью, они закреплены на болтах, до которых, сняв боковые пластиковые крышечки, легко добраться.
Отрывая рога, важно не порвать проводные соединения с пультом, их нужно нежно освободить от пластиковых «галстуков» и добраться до разъёма, который, хоть и залеплен термоклеем, но легко разъединяется.
Из оторванной верхней части нужно выковырять красивый пульт (крепится на 4-х саморезах), отломать два неплохих динамика, а вот всё остальное железо придется выкинуть, правильного применения ему я не нашёл.
Вот пульт, он в дальнейшем пригодится.
Несмотря на нарядный дизайн, поводов для радости немного: дисплей подслеповатый, да и кнопки, к сожалению, — самый эконом-класс, просто халтурно наклеенная наклейка с мембранными выпуклостями, нажимать — так себе. Но две главные — большие и выделены зелёным и красным, что приятно. По идее там ещё целый набор всяких вкусностей, типа программы тренировок и музыкального плеера, но в реале, для программирования, это всё избыточно, музыка на рабочем компе намного удобнее.
С обратной стороны пульта видны все эти кишочки, на которые смотреть не надо, а лучше прикрыть куском пластика/деревяшки, благо четыре стойки под саморезы это обеспечивают с лёгкостью.
Следующий сталинский удар — как правильно разместить этот пульт управления. Было несколько попыток его как-то пристроить, но выяснилось, что на столе ему совсем не место — не дело светить синим экраном прямо в глаза программисту, и так уже дисплеи стараются. Загнать его под стол — неудобно, потому что дешёвый экранчик виден только под определенным углом наклона зрения, то есть под столом цифры не читаются совсем. Правильное решение было найдено — слева от программирующей персоны, экраном в небо, просто как продолжение поверхности стола. Так и в глаза не светит, и когда захочешь с ним о чем-то пообщаться, — никаких проблем, все цифирки очень даже заметны, и кнопочки под рукой. Да, понадобился кронштейн в виде куска прямоугольной дюралевой трубы, но думаю, сойдет и вообще что угодно, например, вульгарный обломок доски деревянной.
С датчиком, обеспечивающим интимную связь программера с пультом, я заморачиваться не стал, просто приклеил его на двухсторонний скотч на мордочку пульта, смотрится эстетично и наукоёмко, не мешается, а при моих скоростях программирования — от 0,8 до 2 км/час, фича представляется необязательной совсем. Впрочем, всё индивидуально, если кто-то из начинающих кодеров чувствует себя неуверенно в таком стиле программирования, тогда лучше прицепить его за какую-нибудь одежду. От возможного падения он вряд ли спасет, но вот от перерасхода электроэнергии, затраченной на вращении ленты под упавшим и потерявшим сознание программистом, скорее всего защитит. Что несомненно утешает.
При первоначальном тестировании обнаружилось, что высота столешницы Эргостола регулируется только от 66 до 120 см, что разумеется оказалось мало, так как не забываем, программирование производится не на полу, а на ЮНИКСе, высота поверхности которого находится примерно в 15 см от пола. Более высокий стол сразу стоит почти вдвое дороже, так не годится. Что делать? Применяем экологически чистую технологию — красивые клеёные бруски, сечением 15×15 см, подложенные под ножки Эргостола!
Всё стоит ровно, не качается, и высота, наконец, вполне комфортна для работы и сидя и стоя.
Да-да, сидя тоже можно и нужно! Мне известны попытки внедрить эту «беговую» технологию в программирование, которые закончились провалом именно по причине того, что каждое изменение статуса «сели-встали» сопровождалось перетаскиванием беговой дорожки в другой конец комнаты. Разумеется, надолго энтузиазма не хватало. Значит путем прикладывания одного места к другому выяснилось, что защитные короба по краям ленты идеально совпадают с расстоянием между ногами обычного офисного стула типа Бюрократ.
Правильная установка Бюрократа на ЮНИКС должна сопровождаться какими-то дополнительными утилитами, препятствующими самопроизвольной деинсталляцией Бюрократа в самый ответственный момент. В качестве таковых были применены две беленькие пластиковые дощечки из ПВХ, тупо приклеенные к боковинкам на двухстороннюю липучку. (Подойдёт вообще какой угодно листовой материал, но вот мне под руки попался именно ПВХ лист 5 мм.)
Вот теперь ноги Бюрократа не соскальзывают, да и когда нужно поставить одно на другое, тоже не приходится особенно прицеливаться, направляющие рулят. Процедура «сели» упростилась до минимума:
- жмак кнопку на пульте, ЮНИКС остановился;
- жмак-жмак две кнопки на пульте стола, стол опустился;
- одной рукой хватаем Бюрократа и ставим его на ЮНИКС.
Всё.
Процедура «встали» — выполняем стек в обратном порядке, начиная с убирания Бюрократа под соседний стол.
Вуаля, программировать подано.
Ещё раз прошу прощения за качество изображаемого, но вот это — реальность, то есть, несмотря на крайне стесненные условия рабочего бардака, технология прижилась и функционирует весьма успешно.
Замеченные особенности
ЮНИКС достаточно тих и тактичен. То есть в процессе программирования он не издаёт никаких громких звуков, отвлекающих или раздражающих. Чуть слышное довольное урчание наоборот создает мирный и позитивный настрой.
ЮНИКС ревнив. То есть если он функционирует, а я легкомысленно отошел в сторонку и чем-то занялся, он начинает недовольно кряхтеть, поскрипывать и вообще проявлять неудовольствие. Дисциплинирует: хочешь сойти с дистанции — останови дорожку и тогда уже иди по своим делам.
ЮНИКС традиционен. По крайней мере известный наш тезис «не подмажешь — не поедет» оправдывается полностью. В комплект поставки входят две бутылки с силиконовым маслом, ну так вот не надо скупиться (по инструкции — капать время от времени), а заливать масло надо с самого начала и с запасом! Где-то в конце первой бутылочки масложор закончился, недовольные кряхтения и скрипы прекратились, стало быть конструкция вышла на режим. Ну и подтянуть ленту нужно, примерно через полгода, чтобы шла ровно и не провисала.
ЮНИКС должен крутиться для того, чтобы на нём программировать. Программирование на неподвижном ЮНИКСе нисколечко не способствует, а наоборот только ухудшает, ноги начинают ныть и настроение падает.
Результат
Неожиданно позитивный. То есть реально получается прогуливаться по 3–4 часа кряду, совершенно не замечая усталости, этого я от себя не ожидал. Второе откровение — перед покупкой, глядя в сети на картинки этих смешных поднимающихся столов, я не предполагал за ними никакой устойчивости, и заранее готовился «прибивать» стол к стене в поднятом положении, чтобы экран не трясся при наборе текста и движениях мыши. Поразительно, что не понадобилось, почему — так пока и не понял, то ли хватает общей массы конструкции, то ли облокачивание верхней половиной тела на стол создаёт субъективно комфортное восприятие колеблющегося монитора, так как он колеблется вместе со всей моей тушкой, не знаю. Но и в очках, и без очков процесс вполне комфортен. Больше всего я опасался, что при таком «вертикальном программировании» не получится трассировка печатных плат, так как процесс сильно завязан на точные движения мыши. Ан нет, всё прекрасно заработало, то есть удалось нормально уходить в транс, мышь двигалась чётко, не отвлекала, более того возник неожиданный бонус — ритмичные движения ног по музыку (ну, а ручная трассировка-то всегда под музыку) по-своему способствуют креативному процессу и как-бы «подталкивают» его. Конечно всё это — субъективщина, не хватает статистики для каких-то определенных выводов. Впрочем, тезисы «танцевальное программирование» или «креативный марш юниксойдов», ещё подлежат осмыслению, возможно в этом что-то и есть.
Основной режим программирования оказался именно прогулочный, слишком быстро бегать пока не получается. То есть совершенно реально на 3–4 часа «загулять», совершенно не замечая времени и того, что происходит под ногами. Потом — заседание, но не на долго, даже с учётом дополнительной подушки, Бюрократ — всё-таки не самое комфортная среда программирования, поясница затекает, да и вообще сидя спать хочется. Примерно 20–30 минут, и всё, релакс закончен, можно снова продолжать танец лихих кодеров на несколько часов, в общем усталость от ходьбы практически не ощущается.
Разумеется, масса позитива от изменения самочувствия, — все субъективные диагнозы заметно поутихли, а некоторые так и вообще спрятались. Негатива пока нет, но ожидается, так как непонятен ресурс рабочей ленты ЮНИКСа и что делать, когда он наконец кончится. Также настороженно высматриваю долговременные последствия для своей абсолютно неспортивной тушки от прогулочного образа программирования, пока вроде тоже нет, но наблюдения продолжаем. Время тестирование на сей момент — 1 год, пока полёт нормальный.
Планов громадьё
В наступившем году хотелось бы улучшить мироздание в следующем направлении:
- запилить простейшую автоматику, чтобы стол поднимался и опускался до фиксированного уровня коротким нажатием на одну кнопку (а не длинным на две),
- как-то нормализовать свисающие лианы проводов, наверно какие-нибудь красивые короба приделать и всё туда убрать, хотя в общем и так всё работает, ничего не задевает при спуске-подъёме;
- детально разобраться с наклонными режимами программирования, то есть поисследовать как проистекает процесс при разных углах наклона ЮНИКСа.
Ну и было бы славно узнать об аналогичных опытах и свершениях, буде ими кто-то поделится.