12058

Рукописи не рецензируются и не возвращаются

Как-то раз подключали к интернету очередной ПК в госконторе, где офлайновые пользователи были делом привычным. На месте застали комп с 98-й виндой, поржали и решили, что WinXP быть на этом компе. Хотя к тому времени продавалась Win7, но комп был слабый. Поставили, настроили, провели сеть, ввели в домен и даже подключили общую папку отдела, в котором состоял пользователь. И ушли.

Потом появился пользователь, им оказалась бабушка лет семидесяти. Она занималась переводом технической документации с английского на русский и обратно. Увидела она вместо 98-й винды ХР и не приняла новинку. И всё-то в новой системе было не так и не то. Предъявляла она претензии через своих руководителей нашим руководителям. К ней ходили разные сотрудники нашей конторы, так как бабушка была заслуженным сотрудником и надо было сделать так, чтобы она успокоилась. Благо находились мы в одном здании с этой госконторой. Мне достался следующий случай общения с бабушкой.

— Пропадают куски текста при наборе в текстовом редакторе.

Запрос был сформулирован как очередное подтверждение того, что раньше было хорошо, а стало явно хуже: теперь, мол, и текст пропадать начал.

Прибываю на место и прошу продемонстрировать. Бабушка в полной уверенности в том, что сейчас-то она покажет, как всё плохо мы ей сделали, начинает набирать текст и в процессе набора переключает язык (Alt + Shift). Я в этот момент смотрю на экран и вижу, как бабуля после нажатия Alt + Shift переходит в верхнее меню и, не глядя, слепым методом продолжает набирать текст. Пляшут выпадающие подменю, случайным образом после очередного нажатия на какую-то букву курсор возвращается в текст. Бабушка этот момент пропускает и лишь констатирует факт пропуска набранного вслепую текста мне, когда поднимает голову.

Оказалось, что бабушка использовала новаторский способ переключения раскладки двумя вытянутыми пальцами в виде буквы «V» и на старой клавиатуре вместо Alt + Shift иногда прожимала только Alt, который уводил бабулю в верхнее меню, где она случайным образом блуждала и потом так же случайно возвращалась в уже набранный текст.

Этот раунд наша контора в моём лице выиграла у бабули. Но баталии продолжались ещё долго.

12057

Пока корона не рассосётся

Все, наверное, слышали золотое правило: работает — не трогай! Это действительно хорошее правило, проверенное жизнью.

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

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

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

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

Ты увидел, но не понял зачем? Подумай ещё раз, пока корона на голове не рассосётся: возможно, это не мусор на полу, а кто-то более опытный просто заранее подстелил соломки?

12056

Фьють-фтють

Админю заводоуправление. Сижу в большом кабинете на тридцать сотрудников.

Третий на грани слышимости звук отключения-включения жёсткого диска. Как будто питание теряется либо хард умирает. Так: фьють-фтють. Облазил все компы в кабинете. Всё работает, всё чётко, жалоб нет.

Сегодня утром набрал кофе и открываю дверь в кабинет: фьють-фтють. Сбойный хард найден, петли смазаны силиконовой смазкой.

Утро иногда бывает добрым.

12055

Чего хотят женщины

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

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

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

Эффект был поразителен по контрасту. Вся моя деятельность, такая полезная (как мне казалось), не собрала столько позитива, улыбок и благодарностей, сколько собрал подъём бутыли с водой.

12054

Локальнее некуда

Как-то звонит мне знакомый директор дизайнерской компании, где я недолго работал админом, и спокойно объясняет, что я был последним, кто чинил компьютер, у которого сейчас не работает сетка. Надо сказать, что претензия была предъявлена через полгода после увольнения, но это на совести директора.

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

— Мне передали, что у вас сетка не работает. Я проверил — всё нормально. (Показываю, что локалка исправна.)

— Нет, не эта сетка, я сейчас покажу…

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

— Вот видите, сетки нет…

И тут до меня доходит. Методом аналогии и тыка нахожу настройки рабочей области и включаю разметку страницы «сетка». Тихо плачу про себя и ухожу.

12053

Начнём ab ovo

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

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

Получив разрешение, я завёл тетрадь с 96 листами и вначале описал важность проблемы моделирования процессов взросления и старения живых организмов, затем довольно подробно рассказал, как устроена моя «ЭВМ», употребляя такие умные термины, как «индикатор жидкокристаллический точечно-матричный» и «микроконтроллер с масочным ПЗУ». Что в биологии, что в вычислительной технике я разбирался посредственно, но выигрывал в другом: плохо зная значения терминов, умел ловко ими щеголять. Отдельный раздел я посвятил «допущениям и упрощениям при моделировании по причине ограничений, накладываемых быстродействием и объёмом запоминающих устройств специализированной ЭВМ».

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

При «моделировании» «ЭВМ» не сообщала, чем заболевал виртуальный питомец и чем он лечился. События были просто «заболел» и «вылечили». Но я в ходил в библиотеку, брал книги по ветеринарии, находил там названия болезней и лекарств от них, а в журнале «раскрывал подробности»: чем «болел» питомец и чем я его «лечил». Этот приём я называл «умственным моделированием процессов, моделирование которых на данной ЭВМ невозможно в силу ограниченности её ресурсов» и рассказал, как их можно было бы моделировать на более солидной машине. Даже фрагмент программы на Бейсике (ни на чём не проверенной — дома не на чем было, а на информатике некогда) приложил.

Трояков у меня во всех четырёх четвертях было немало, но по биологии — пятёрки!

А тетрадь та теперь в краеведческом музее.

12052

Взгляд из соседнего окна

Программисты пишут на разных языках. С уважением, ваш К. О. Следствием этого факта является то, что некоторым программистам легче и проще работать с джаваскриптами, DOM, объектами и прочим в том же духе: совсем не вопрос написать скрипт, который получит от сервера данные в JSON, разберёт их, создаст необходимые DOM-структуры и встроит их в документ.

А вот другим программистам легче и проще написать 100500 шаблонов страниц, которые будут генерировать HTML на стороне сервера, а затем одним AJAX-запросом готовый код вместе с используемыми в нем скриптами будет просто вставлен в нужное место на странице.

Какой подход правильнее?

Спец по JS считает, что первый: по сути, он пишет программу, которая выполняется на компьютере пользователя, обращаясь к удалённой БД на сервере. Сервер в этом случае просто транслирует AJAX в запросы к базе данных.

Другой специалист думает, что первый вариант вовсе не так хорош и имеет недостатки:

— программа получается достаточно сложной и объёмной, написать корректно работающий большой скрипт сложнее, чем сто маленьких простых;

— её работа зависит от корректности обработки браузером;

— её можно модифицировать на стороне пользователя, поэтому сложнее обеспечить безопасность и целостность данных;

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

Это чем-то напоминает сравнение Windows и UNIX: в одной из них принято писать многофункциональные приложения со множеством возможностей, очень большие и сложные, и потом выпускать новые версии с новыми возможностями;

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

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

12051

Дело мастера боится

Жил-был у меня смартфон. Обычный такой андроидокитаец, имя ему — H3060. Да-да, просто H3060, никаких излишеств вроде имени производителя и т. д. И вот однажды он поломался: включаешь — загружается только в отладочном режиме; вытащишь батарейку, подержишь так часа четыре — запускается нормально. Ну, и ещё глюки: кнопки громкости не работают (в отладочном режиме обе, в обычном одна), микрофон не пашет, вайфай цепляет как попало.

Принёс я смартфон в местный СЦ. Мастер покрутил аппарат в руках и сказал, что легче выкинуть, ибо чинить такие аппараты — сущий геморрой. А теперь самая мякотка: выхожу из СЦ, прохожу метров двести, потом думаю: чем чёрт не шутит… Включаю — работает! Вытаскиваю батарею, вставляю — работает!

Шут их знает, китайцев этих. Испугался, видать… Я бы сравнил смартфон с наркоманом, переевшим китайских синтетических забав и внезапно увидевшим санитара с полным шприцем галоперидола.

12049

Яркие краски в унылой консольке

Сижу на проекте коллеги. Вот несколько правил, которыми он руководствовался.

Если используете AJAX, никогда не забывайте формировать весь HTML и все биндинги на стороне сервера. Зачем передавать данные, если можно передать HTML?

Чтобы удобнее, например, реализовать галерею, сразу сформируйте HTML с инлайновыми джаваскриптовыми функциями goNext(), goBack(), closeGallery(). Куда же положить эти функции? Конечно ж, в глобал скоуп. «А что вообще можно класть в глобал скоуп?» — спросите вы. Конечно, всё. Всё, всё, всё и ещё раз всё. Зачем загружать себя модулями, низкой связанностью? Это всё брехня бюрократов и неталантливых сыщиков. Вообще все функции и переменные положим в один файл, чтобы «удобно» там было потом найти что-то. И вообще, классно ведь — один файл вместо тысячи, правда?

Для повышения крутости в инлайн-JS в HTML можно добавить несколькострочный код, что-нибудь из jQuery тоже пойдёт. Например, по DOM’у шариться через инлайн-JS — просто сказка!

Если вы делаете одностраничное приложение, то всё-таки придется реализовать историю. Но не печальтесь, не надо, это просто. Главное, не забудьте одно важное правило: проверки данных ставить нигде не надо. И ничего, что если перейти по ссылке на страницу и затем нажать «назад», ни черта не произойдёт. Всё же правильно работает, в хистори положить нечего, красненькие строчки в консоли JS об этом говорят.

Насчёт красных строчек: это же классно! Зачем делать мир чёрно-белым? Красные сообщения в консоли — это же прелесть, это красиво и разнообразно. Они никак не свидетельствуют о том, что что-то может идти не так. Они, как цветы на полянке в лесу, лишь украшают унылую консольку.

И напоследок: зачем использовать объекты JS? Всё же прекрасно хранится в дивах. HTML — это ж XML, так что вполне сойдёт для хранения данных. Просто ставишь display: none — и делов-то!

12048

Все игроманы, а я программист

Конкретно задолбали юные программисты, косящие под крутых.

Неужели вам ни разу не встречались личности, хвалившиеся знаниями в своём юном возрасте? А мне встречались, причём не раз в два года, а намного чаще, поскольку я сижу на многих форумах, посвящённых разработке игр (чаще всего программисты начинают с мечты создать игру). Я сейчас распространяюсь не о тех, кто в силу своей наивности думает, что сделать GTA или «Крусис» легче, чем оно на самом деле, хотя и такие есть. Больше меня заботят (и умиляют) те, кто кидают понты, хвалятся, что аж семь лет сидят за компом и «изучают» десять языков программирования (и это в 14 лет!), в другой теме копипастя урок про WinForms, а также те, кто красочно расписывают свою школьную жизнь, быдлизм одноклассников и небыдлизм и программисткость самого себя.

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

Объясняю таким личностям раз. Частично это ответ на вопрос, почему такой офигенный народ мне так часто встречается. Секрет в том, что скачать Game Maker или Unity3D, достать бесплатные модели, посмотреть два урока от Васяна527 на Ютубе — в этом нет ничего сложного. Ничего! Тому, кто не пропускал уроки информатики и что-то рубает в теме, не составляет ну никакой сложности пройти курс начинающего девелопера. Возможно, не стоит спорить в срачах, кто главнее и дольше учится программировать?

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

Всем спасибо, можете расходиться.