bash.im ithappens.me zadolba.li

Программы

12640

Галки стоят, не ведая стыда

Десять лет назад я, простой пользователь, больше всего (из чисто компьютерных проблем) боялся подхватить компьютерный вирус. Какую-нибудь зловредную заразу, которая поудаляет или позашифрует файл, закроет доступ на рабочий стол или начнёт строить и вовсе неописуемые козни. Ежегодно я тратился на антивирусы, вспоминая слова знакомого компьютерщика: «На компьютер, подключённый к интернету и не защищённый антивирусом, первый вирус попадёт уже через пятнадцать минут прогулок по интернету»…

Сегодня у меня есть не менее сильный страх. Но это не страх перед вирусами, нет: надёжный и бесплатный антивирус бдит круглосуточно, любую угрозу он собьёт ещё на подлёте. Нет, я боюсь того, что когда-нибудь зазеваюсь и просто нажму на кнопку «Далее» при установке какой-либо новой программы.

Каждый раз, устанавливая новую программу, я стараюсь поверить ей. Каждый раз, находя в ходе установки раздел вроде «Отобразить параметры для опытных пользователей», я надеюсь, что там действительно находятся параметры для опытных пользователей (расписание автозапуска, например, или особые инструкции по работе с дисками). Но увы: раз за разом разделы «Дополнительно» или «Для опытных пользователей», открытые щелчком мыши, обнажают своё смрадное нутро и являют моему взору целую россыпь мерзких и наглых пунктов. Галочки подтверждения уже стоят напротив пунктов, изнывающие от желания вонзить зубы в нутро моей операционки.

Стоит мне нажать на кнопку «Далее» — и на компьютере сами собой окажутся установленными ещё несколько программ — может, и полезные сами по себе, но конкретно сейчас совершенно мне не нужные. А то и программы, ворующие информацию и совершенно легально выкладывающие её в сеть.

Стоит мне нажать на кнопку «Далее» — и домашняя страница моего браузера окажется перенаправленной на абсолютно ненужное мне место.

Стоит мне нажать на кнопку «Далее» — и браузер обрастёт ненужными мне «панелями» и «барами», как дуб — паразитом омелой. А может, и цельный незнакомый браузер пропишется на моём винчестере, перетянув все функции на себя.

И каждая из этих, пропитанных гноем обмана, программ будет установлена совершенно законно. Ведь стоят напротив них не ведающие совести галочки — значит, я вроде как и сам давал согласие на их установку, если не открыл раздел «Для опытных пользователей»…

Я сильно, до ужаса боюсь того, что когда-нибудь зазеваюсь и просто нажму на кнопку «Далее» при установке очередной программы. Уже много лет ни один вирус не поганил мой компьютер так сильно, как испоганю его я сам — если когда-нибудь это случится…

12639

О неизбежных недостатках недофотошопа

Дорогие мои ваятели опенсорса! Я из тех, кто ругает и ненавидит программное обеспечение со свободным кодом.

Вот офисный недопакет на букву L. Поставили его перед визитом Всем Известного Отдела взамен MSO2003. Теперь все бегут с вопросами: «А где? А как?» А всё потому, что система меню и значки очень далеки от «оригинала».

Вот текстовый процессор (хотя и ненавижу это словосочетание) Writer. Диалоговое окно «Параметры страницы» обнаружил в «Формате», а все закономерно ищут в «Файле».

Вот векторный недоредактор Draw оттуда же. Судя по названию, имеет претензии на одноимённый продукт Corel. Инструментов минимум — ну да ладно, для моих задач хватило бы и этого. Но посмотрите, насколько удобно пользоваться инструментами в «оригинале» и насколько неудобно работать у вас!

Прежде всего, перемещение с шагом в несколько миллиметров. Нужно точнее — зажмите Shift. Сделать точное перемещение в графическом редакторе безо всяких лишних кнопок — не наш вариант.

В CorelDRAW двумя щелчками через контекстное меню можно заблокировать различные элементы, чтобы их нельзя было случайно выделить или переместить. У вас возможности блокировки я не нашёл.

Посмотрите, как у вас организована работа с кривыми. Это не работа, а издевательство.

В CorelDRAW есть несколько видов линий, и любой из них можно превратить в кривую в два щелчка. Также в два щелчка можно отредактировать, добавить и удалить узловые точки.

Прокрутка и масштабирование. Колесо прокручивает вверх-вниз. Масштабирование с зажатым Ctrl. Горизонтальная прокрутка только с помощью скроллера внизу окна. Прокрутка при нажатии на колесо (третью кнопку мыши)? Нет, не слышали.

Персональные лучи ненависти тому, кто придумал писать такой громадный пакет на Java, поскольку быстро работать оно по определению не может и не будет. Ах, совместимость? C++ вон тоже компилируется под кучу платформ.

Огромное спасибо за напрочь отсутствующий API (в предке на букву «O» он есть хоть в каком-то виде).

Вот другой графический недоредактор на букву G. Кому пришло в голову написать его на Python?

Кто придумал совершенно левые значки? Вот, например, инструмент кадрирования. Поставить значок «рамка», который используется вот уже полтора-два десятка лет в совершенно разных редакторах? Нелогичности и так не хватает, наверно, надо добавить ещё. Надо придумать что-то своё (в данном случае — стилизованный ножик).


Прежде чем сделать что-то своё, сперва внимательно посмотрите, как это сделано у других, а только после этого делайте. За юзабилити и эргономику пока что денег не берут — или я неправ?

12601

Дорог костыль ко Христову дню

Вижу, менеджеры всех достали… Давайте я вам расскажу одну запомнившуюся мне историю, которую программисты мне припоминали потом ещё о-о-очеень долго.

Итак, небольшая компания, пилящая софт для химиков. На дворе 2006-й, конкурентов у нас не так много: конкретно нашу задачу не решает ни HYSYS, ни CHEMCAD. До релиза две недели, график-план на следующий релиз составлен, и я решаю проверить обновившуюся продукцию одного из двух конкурентов. Сразу обращает на себя внимание иконка в трее, вытаскивающая приложение на передний план, причём с сохранением иерархии окон. «Гм…» — думаю я, оформляю рабочую поездку и направляюсь к одному нашему клиенту.

Первое, что бросается в глаза — огромное количество открытых окон, полностью забитая панель быстрого запуска. Приложений открыто так много, что надо именно скроллить вниз, чтобы их все пролистать. Аккуратный расспрос химика подтверждает: все эти приложения ему нужны, он с ними работает. По большей части это просто документы с описаниями, но есть и разные таблицы, графики. Задаю вопрос насчёт иконки в трее и привожу химика в бешеный восторг. Аккуратный просмотр открытых приложений попутно с расспросом химика подтверждает: почти все эти окна исчезнут с его экрана… через два релиза. То есть через год. За этот год нас просто порвут на кусочки своей иконкой в трее.

Ещё два дня ездил по нашим клиентам и везде убеждался: иконка — это простой костыль, который станет ненужным через два, максимум три релиза. Но вот конкретно сейчас она нам просто необходима, иначе мы потеряем до половины клиентов (мы работали по подписке, так что клиент мог в любой момент разорвать договор).

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

В общем, в пятницу, не дождавшись реакции директора, но понимая, что он, скорее всего, одобрит, я бегу к главному программисту с бумажкой ТЗ, объясняя, что это надо сделать до релиза. Программист начинает бухтеть, что это всё очень сложно, долго, и за неделю никак не успеть. Я прозрачно намекаю на то, что директор по-любому спустит это ТЗ, вопрос в том, когда: в понедельник или во вторник. Тимлид вздыхает и принимает бумажку.

На общей планёрке в понедельник директор достаёт ТЗ и начинает разливаться соловьём, как нам нужна эта иконка, без неё нам не жить, и я понимаю, что директор успел уже сам покататься по химикам и побеседовать с ними. Тут поднимается главный программист и начинает объяснять, что программистам никак не успеть.

— Не успеете — срежем премию, — говорит директор.

— А успеете — выплатим в полуторном размере, — добавляю я и получаю недовольный взгляд директора. Но всё же он кивает.

Засада в том, что это был 2006-й, и не у всех клиентов был высокоскоростной интернет. И для того, чтобы курьеры успели развести релиз, сборка должна проводиться в четверг. Об этом нюансе я узнал вот прямо на планёрке.

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

Почему запомнили именно этот косяк? Потому что это был мой первый косяк в этой фирме. И именно косяк: задумайся я на три месяца раньше, при составлении плана на следующий релиз, иконка была бы в следующем релизе… И я бы успешно профукал её появление у наших конкурентов.

А иконка так и осталась, хотя теперь ей уже почти не пользуются.

12579

Никакого секрета здесь нет

Что важнее для пользователя — мышь или клавиатура? Детский вопрос; должно быть и то и другое. Но всё-таки, исчезновение чего будет раздражать пользователя больше?

Во времена DOS один программист написал shareware-программу для специфических расчётов. Время её работы в бесплатной режиме было неограниченным, но пользоваться можно было только виртуальной клавиатурой. Чтобы избежать этого неудобства, нужно было купить у автора специальную клавиатуру калькуляторного типа, подключаемую вместо принтера. Взломать программу, чтобы работала с обычной клавиатурой, было, конечно, можно, но пришлось бы переписать половину программы, в которой соответствующий метод ввода не был предусмотрен вообще, и этого никто не стал делать. Специальная же клавиатура состояла из одних резисторов и кнопок, автор из её схемы секрета не делал, но честно предупреждал: поскольку он покупает эти детали оптом, а пользователю пришлось бы в розницу — дешевле купить у него. А в виде набора — ещё дешевле. И, намучившись с виртуальными клавиатурами, люди покупали, тем более что программ для этого вида расчётов тогда больше не было.

А говорите, GUI против консоли…

12551

Нажмите «Сделать всё» для всего

Расскажу и я о бритвах. Не так красочно, как мой коллега, но ближе к реальности.

История начинается с обычной опасной бритвы, которая появилась за 2000 лет до нашей эры. Время шло, металл становился доступнее, бритвы — острее, тоньше, легче, но лишь в начале двадцатого века инженеры додумались, что хорошо бы лезвие окружить чем-нибудь эдаким, предотвращающим порезы. Так родилась безопасная бритва. Ещё через почти полвека кто-то додумался ставить не одно лезвие, а картридж из нескольких. Потом ещё полвека — появилась эргономичная ручка, полоска для смазывания с экстрактом чего-нибудь, лазерная заточка и многое другое. Правда вот, использование лезвий из аморфных металлов, которые почти невозможно затупить, нам уже лет тридцать обещают, но никто не торопится вводить эту фичу. Но даже за это время станки так и не обезбажили: хрупкий пластик крошится в руках, заточки часто хватает на одно-два бритья, после чего процесс превращается в разновидность пытки, а одноразовый станок выбрасывается целиком. Бриться, как в рекламе, чтобы с одного раза и сразу начисто, у меня не получалось ни разу ни с одной бритвой за все двадцать лет, что я бреюсь.

Что же с программированием? В программировании сроки не измеряются веками. У нас не то что веков — нет даже десятилетий! Многие продукты доходят до стадии беты за год-два. Столкнувшись с простеньким багом или торможением, пользователи начинают верещать на ультразвуке: это бритве можно не сбрить с первого раза щетину или затупиться, а тут они же аж 15 баксов за продукт заплатили (в лучшем случае), они — клиенты, и у них всё должно быть идеально! Это к бритве не надо прилагать инструкцию на десять страниц и организовывать круглосуточную техподдержку, а к любому ПО надо, потому что даже если там будет форма с огромной кнопкой «Сделать всё» и надпись «Нажмите „Сделать всё“ для всего», то обязательно найдётся пользователь, который позвонит и будет истерить, что он ничего не понял и у него ничего не работает, а он же деньги платил и теперь натравит на нас НАТО, ООН и Спортлото.

Мы можем сделать всё быстро, качественно, недорого — но выбрать можно лишь два пункта, а для сложных приложений так и вовсе один.

12542

Proof of shave

Раз пошло такое дело и заговорили о бритвах, давайте я расскажу историю, почему же программисты делают именно такие предметы личной гигиены.

Начинается всё со здравой мысли: а давайте сделаем новую бритву! ТЗ простое: удобная ручка, два лезвия с расстоянием между ними N миллиметров и относительным сдвигом K, срок жизни — пятьдесят тысяч срезанных волосков, прилагаемое усилие — до 100 ньютонов. Реализуемая функциональность: побрить.

И вот одинокий, но гордый инженер за пару дней создаёт proof of concept. Бритва выходит неказистая, ей ещё можно порезаться, она плохо бреет дряблые щёки, но ей уже вполне реально побриться.

И тут приходят они — люди, которые знают, чего хочет заказчик. И говорят они странные слова. Заказчик бреется утром, а утром ни у кого ни на что не хватает времени. Давайте прикрутим к бритве телевизор, чтобы заказчик, пока бреется, мог посмотреть новости. Поскольку заказчик постоянно крутит бритву, к системе нужно прикрутить гироскоп и обеспечить поворот экрана по трём осям, чтобы он постоянно был горизонтален.

Одинокий, но гордый инженер тяжело вздыхает и сообщает, что в телевизорах он разбирается очень слабо, а в системах пространственного позиционирования вообще ни в зуб ногой. Поэтому ему придают в помощь телемастера и специалиста по этим самым системам, а чтобы их согласовывать — руководителя проекта.

Следующий месяц команда из четырёх человек старательно клепает новую систему. Телеэкран оказывается нелёгким, система моторчиков тоже весит немало, гироскоп тяжелый по определению, но его удаётся заменить цифровым акселерометром. Наконец, заказчику демонстрируется прототип. Пока заказчик водит прототипом по выбритым с утра щекам, телеэкран висит у него перед глазами. В итоге заказчик ухитряется порезаться, и в список требований добавляется система позиционирования бритвы на лице.

К этому моменту сама способность побрить уже в глубоком загоне. Инженер, проектировавший бритву, на 80% занят в другом проекте, и про этот вспоминает, как про страшный сон. К бритве прикручивается лазерный сканер поверхности и система предупреждения о недопустимых углах наклона. Заказчик в целом одобряет, но вносит предложение, раз уж в бритве есть лазер, добавить возможность использовать его как лазерную указку при проведении презентаций.

Ручка, рассчитанная на 10 килограммов, уже не справляется, и её перепроектирование поручают телемастеру. Телемастер ваяет новую ручку из дерева. Тестировщики находят в ручке десять багов — мест, где она всё равно ломается. Баги назначаются на специалиста по пространственным системам, и тот укрепляет ручку фрезерованным металлом. В одном месте ручка всё равно продолжает ломаться, но время поджимает, к тому же есть workaround: если место поломки прилепить на жвачку и замотать изолентой, ручка кое-как работает, так что этот баг переносится на следующий релиз.

В этот момент выясняется, что побрить верхнюю губу этой бритвой невозможно: телевизор мешает. Чтобы этого не происходило, нужно временно перевести телевизор в режим огибания носа, и эта процедура описывается в инструкции по эксплуатации. После всех нововведений лазерную систему нужно калибровать перед каждым применением, для чего нужно ей указать на дальнюю стену и поводить по ней лучом, чтобы нивелировать погрешности.

Новая бритва стоит, как небольшой паровозик, среди её функциональности — будильник, радиоприёмник, женский режим, пин-код для защиты от детей, фронтальная камера для съёмки свежеобритого себя и возможность связываться с домашним компьютером через Bluetooth. Срок службы лезвий прежний, они тупятся за неделю.

А в это время уже в другой конторе одинокий, но гордый инженер за пару дней создаёт proof of concept простого, дешёвого устройства, которым можно бриться. Пожелаем ему удачи.

12516

Один сломал, второй потерял

Да, дорогим инструментом удобнее, эффективнее, приятнее работать. Есть лишь одно «но». Так и хочется сказать: «маленькое», да только не маленькое оно, а существенное, кардинально всё меняющее. Дорогой инструмент постоянно боишься сломать или потерять. От этого трясутся руки, и эффективность, удобство и приятность сходят на нет.

Опасения эти не напрасны. Вскоре после покупки уронить дорогую дрель, раздавить собственным задом дорогой телефон и тому подобное — это те случаи, когда дважды платит отнюдь не скупой. Поскольку сам виноват, не помогут ни страховка (тем более что страхуют не всё — слышали ли вы когда-нибудь о страховании дрели?), ни гарантия, если она ещё действует. Зайдите в любую мастерскую — если там несколько дрелей, и одни старые, а другие новые, сотрудники стремятся сначала полностью выработать ресурс старых, выжать из них максимум, а новые берегут до поры до времени. И правильно делают.

Сотовый телефон стал моим рабочим инструментом в 2002 году. Уже тогда я задумался обо всём этом и принял решение купить б/у аппарат. И уже тогда начал получать первые навыки несложного ремонта мобильников (а в 99% случаев он требуется именно несложный).

Да, я менял телефоны. Но не тогда, когда они ломались, а когда хотелось новую функцию. Сначала GPRS, потом камера, потом вайфай, потом навигация. Всякий раз брал добротные модели, но в состоянии «очень б/у», потому и получалось недорого. Аппетиты на новые функции у меня росли медленно, поэтому каждый аппарат служил мне до полного физического износа корпуса — но не железа, которое я поддерживал в исправном состоянии, как мог. Некоторые мобильники, которые и после этого работали как часы, просто выглядели не очень, я сумел раздарить. Некоторые, с очень уж неприглядными, проклеенными со всех сторон корпусами, которые не подаришь даже бомжу, до сих пор лежат у меня в полностью рабочем состоянии, включая тот, самый первый. Не пользуюсь я ими только из-за отсутствия нужных функций.

Экономил я и на связи. Первым узнавал об акциях разных операторов, оперативно менял их, когда у того или иного выгодность акций перевешивала. Первым узнавал о безлимитном интернете с ограничением скорости, ещё когда это было в диковинку, потом — о ежедневных бесплатных минутах внутри сети. Всё это грамотно использовал и использую.

Ремонт телефонов никогда не отнимал у меня много времени. Самостоятельное копание в них не помешало мне за это время обрести семью, не сделало меня раздражительным — ничего подобного не наблюдается. Упущенной выгоды — тоже. Многие из тех, кого я знаю, меняют телефоны каждый год, некоторые берут для этого кредиты и даже вовремя с ними разделываются. Бывает, теряют и очень горюют. А я ни разу не брал кредитов на средства связи, ведь «очень б/у» можно купить (в том числе и у тех знакомых) и без этого. И всё у меня работает как часы, хотя и внешне покрыто трещинами и заплатами. Что я делаю не так?

Ах да, вернёмся к нашим баранам. Платное ПО. Права на его использование внезапно лишиться столь же легко, как раздавить телефон. Достаточно, в зависимости от способа подтверждения этого права, нечаянно повредить наклейку, потерять USB-ключ, подвергнуться угону аккаунта в магазине приложений и так далее. Только не предлагайте пиратство — вот тут уже скупой действительно платит. И не дважды, а на пару порядков больше.

А ещё запомните: кто привык находиться в перманентном состоянии преодоления искусственных трудностей, при возникновении реальных окажется в положении «тяжело в учении — легко в бою». А что скажет владелец несамодельного несуперкара, сломайся его «паркетник» на расстоянии в пару сотен километров от ближайшей СТО?

12493

Почти что часть ядра

Мой телефон с зелёным роботом внутри в очередной раз заартачился и отказался ставить обновления программ по причине «места мало» — ага, 200+ мегабайт свободной памяти! Пришлось начать шаманские танцы. В процессе плясок возникла необходимость пометить пару программ (которые в обновлениях не нуждались) как системные. С моей лёгкой кривой руки в этом списке оказалось приложение Buben с очевидной функциональностью. Я посмеялся, перезагрузился (как велела инструкция)… и с удивлением обнаружил, что зелёный робот бодро обновляет софт.

Я не знаю, кто именно отзывается на звон бубна, но этот кто-то явно могуч…

12492

Far too scary

На сервер надо было закинуть большое количество данных, поэтому вместо копирования по сети решили подрубить USB-диск напрямую. Диск подключён, определён. Запускаем Far — и экран гаснет, а через секунду появляются белые буквы на синем фоне.

У админа встают волосы дыбом. А, нет, это всего лишь Far в полноэкранном текстовом режиме запустился…