Заметил
Ты живёшь во вселенной, где пони кушают радугу и какают бабочками.
А в моей вселенной всегда есть гоблин, который запустит скрипт от предыдущей версии в релизе следующей. Причём для другой платформы. И будет биться в истерике, что он всё сделал по инструкции, которую перед прочтением съел.
Как так можно проектировать систему обновления, чтобы была возможность запустить скрипт от предыдущей версии на более новой? И, в общем-то, я понял, почему такая возможность появляется.
Был у нас как-то один проджект-менеджер, который мнил себя разработчиком. Впрочем, и менеджером он был таким же, как разработчиком. Именно он почему-то рекомендовал заказчику сделать «дёшево и быстро» без обсуждения с командой разработчиков. К сожалению, заказчик его услышал. Даже дальнейшие предупреждения тимлида были проигнорированы, а, скорее всего, просто замяты проджект-менеджером.
Ну что же, карты выложены, идею реализовали (хозяин — барин же). И тут — ура! (то есть «ёпт!») — продакшн поломался. Пришлось, конечно же, много времени потратить, чтоб всё восстановить. К счастью, скрипты тогда были обратимыми.
С того момента минуло немало времени, я получил много экспы и уровней, и именно поэтому сейчас ни один гоблин не пройдёт!
Есть сервак, на нём виртуалки. В одной из виртуалок что-то навернулось, она потеряла доступ к сети — зайти нельзя. С консоли хост-сервера через SSH не починить, нужен визуальный доступ.
Подключаемся через IP/KVM дата-центра. Проблема в том, что IP/KVM-клиент сделан на базе ActiveX, поэтому работает только из-под IE в винде. Для этого есть лишний «мусорный» системник с виндой.
Подключаемся к этому компу с рабочего аймака с помощью RDP, идём с проблемой на митинг. На митинге оказывается, что показать-то отсюда нельзя, а если всех вести в комнату, будет балаган.
Достаём айпад, подключаемся к рабочему компу по TeamViewer. При этом айпадом, чтобы было понятно, что и как, управляем с ноута в переговорке через Reflector, изображение с этого компа транслируем на проектор, который снимает веб-камера для одного из менеджеров. А-а-а!
Фанаты Apple (и любых других брендов), остерегайтесь своих мечтаний. А то сбудутся.
Спите и видите, что все вокруг прозрели и начали пользоваться техникой только вашей любимой марки и никакой другой? Хорошо, но учтите: любой производитель занимает не все ниши из имеющихся. Apple занимает в основном премиум-нишу. А ведь есть и сверхпремиум (вроде Vertu), средний класс, бюджет, сверхбюджет. Средним классом у Apple можно считать устаревшие, но остающиеся в производстве модели, бюджетом с некоторой натяжкой можно назвать б/у аппараты. А сверхпремиум? А сверхбюджет? Нету. Ничего. Ещё есть специфические ниши: спортивная, защищённая техника. У того же Apple из спортивного — только Nano, из защищённого — снова ничего.
И вот представьте, что ваша мечта сбылась: ваш любимый производитель стал монополистом. Не занятые им ниши опустели. Конечно, он поспешит их занять, но мгновенно всё равно не сможет. В течение этого периода соответствующие ниши будут совсем пустовать. Вы уверены, что это будет удобно?
Но на этом сценарий не заканчивается. Монополия вредна прежде всего для самого монополиста. Без конкуренции он зачахнет, как заплывает жиром спортсмен, переставший соревноваться. Скажите, ваш любимый бренд радует вас качеством своей продукции? Вот потому и радует, что есть кого догонять и перегонять. Окажется на стадионе один-одинёшенек — остановится.
И в следующий раз, увидев на противоположном сиденье людей с железками брендов, за которые вы не «болеете», не злитесь, а скажите им мысленно спасибо. Своим выбором они внесли вклад в качество техники того производителя, который по душе вам.
Эта история абсолютно реальна и столь же заурядна, но в ней вы, возможно, узнаете себя.
При переносе данных из очень старой 1С 7.7, перепаханной вдоль и поперёк, в новую «восьмёрку» я встретил просто потрясающий комментарий:
//Временная заглушка. Сделаем пока так.
//Карпов, 01.03.2000
Вывод: временное, если оно сразу не глючит, пашет до гроба без изменений.
Знакомый уехал за границу, далеко и надолго, мы с женой приютили его собаку на ПМЖ. Пёс весёлый, игривый, но непослушный до ужаса. Возраст ещё позволял перевоспитать, поэтому начали немедля. В процессе воспитания выяснилось, что собака на самом деле послушная, только подход к ней нужен особый. Не спрашивайте, каким образом, но мы выяснили, что «сидеть» пёс не воспринимает, а «sudo сидеть» — исполняет охотно!
Жена уже начала подшучивать, что пёс у нас на линуксе, пока я не вспомнил, как однажды стал свидетелем наказания собаки: прошлый хозяин бегал за ней с ремнём с криком: «А ну иди сюда-а-а!» Видимо, хозяйское «сюда» прочно впечаталось в юный мозг как обозначение угрозы, в результате чего наше «sudo сидеть» пёс воспринимал как «сядь, пока ремня не получил».
Есть рационализаторы — очень интересные и полезные люди. А есть перерационализаторы, экономящие там, где не следовало бы.
In a far-far-far galaxy, long-long-long time ago… Или как там? В журнале, до сих пор именующемся «Радио», поместили такую историю. Как нормальные люди обмениваются
Наши дни. Разбираю входящие QSL. Что-то знакомое. Да это ж моя карточка! Моя и не моя. Я бы свою так не искалечил. Какие штампы — ещё штемпельную краску расходовать! Вместо этого мой позывной истыкали дыроколом. Любят некоторые вместо кистевого экспандера его использовать, так чего же пропадать джоулечкам? Рацуха в квадрате! А рядом набит новый позывной. По всем признакам — доской, в которую по по контурам букв и цифр вбили маленькие гвоздики. Так раньше дату выпуска набивали на упаковке творожной массы. Только там рваных краёв у отверстий не было. Вот в каком эцихе побывала моя карточка.
Здесь не «Задолба!ли», так что говорить это слово не буду. Скажу другое: проржали. А меня проржать непросто.
Закончил очередную функцию нашей Главной Проги. Андроид-приложеньице отправляет запрос на сервер конторы, получает ответ, выводит очередной график. Очередное сообщение — очередную линию рисует алерт-подобным цветом. Запрос — ответ — отображение.
Дочь скачала программку для соцсети. Сообщения, группы, картинки. Запрос — ответ — отображение.
Гаджет о погоде. Удобно, градусы всегда видно на рабочем столе. Оно постоянно делает запрос на погодный сервер, получает ответ, выводит.
Взгрустнул.
Запрос — ответ — отображение. Таковы 90% ПО и в маркетах, и которое делаю сам. Фактически — урезанная версия браузера. (Ну ладно, иногда расширенная. У нас, например, теги графиков и алертов не по спецификациям W3C сделаны. Три раза «ха».) Блин, но суть-то одна!
90% программистов пишут браузеры. Если повезёт, появляются 10% настоящего программинга на стороне сервера, который заказчику/клиенту/потребителю не виден, но чаще всё уже готово. (Сам использую спелчекер — ну, если юзер вдруг захочет тут же письмо отправить, кошерно бы его сразу и проверить, всё-таки начальство в основном использует, ему негоже ашипки сажать.)
Коллеги говорят: «За что платят, то и делай». Да я не против. Но грустно как-то немного…
Восьмое марта. Ну, шестое, конечно, но в фирме поздравляем сегодня. Строгий указ начальника: всем быть в костюмах, включая сисадмина (меня). Ну ладно, так и быть. Свитер снял (борода осталась), надел костюм, пришёл на работу. А костюм у меня белый. А вес — 120 кг без малого. И весь день меня окружали люди, тихонько напевающие: «Ледяной горою айсберг из тумана вырастает…»
Всё! В следующем году только свитер.
Будучи студентом, подрабатываю в сервисном центре. Работа несложная: винду перебить, проги поставить. Иногда случается в различных фирмах прокладывать сетки витой пары, случается полазить по чердакам с оптикой в зубах.
Концентратор нашего офиса — центр всея сети из 5–6 организаций вокруг. Им от нас — интернет, нам от них — деньги. Пару месяцев назад пришлось подключать нового абонента — коммунальное предприятие, кадровым составом напоминающее закрытый клуб для женщин от 45. Им стало тягостно выносить тариф своего провайдера, а у нас дешевле и ближе (мозг кушать они любят и, что немаловажно, умеют).
Для начала я был послан к ним на разведку: где стоят машины, где концентратор и так далее. Как и ожидалось, слово «концентратор» впервые прозвучало в этом помещении (однако каждая тётка ткнула пальцем в висящую на стенке АТС, свято веруя, что витая пара — всё равно что телефонный кабель, в ПК можно спокойно ткнуть его, и всё будет работать), так что пришлось искать его самому, внимательно исследуя каждую витую пару, идущую вдоль стен и кое-где показывавшуюся из многочисленных кусков коробов (видимо, на цельный короб денег зажали). Всё казалось просто.
После исследования всех линий, которые иногда выглядывали из-под кусков проводов, я вроде бы как нашёл цель поиска — она должна была находиться в тумбочке, мирно стоящей у стенки. Триумфально подойдя к ней и заглянув за неё, я был поражён: куча проводов из компьютеров тупо уходили в стену…
Ещё по разу опросив каждую тётку на предмет «коробочки, в которую втыкаются все сетевые провода из компьютеров», я наконец нашёл концентратор — он был спрятан в неприметную коробочку из-под бумаги в самом углу помещения, аккурат в том месте, где из стены выходили провода.
Здесь люди удивляются, что бабуля посчитали камеру наблюдения за старый перевёрнутый
Классический пример: монитор называют компьютером, в клинических случаях — телевизором. Это «правило» очень хорошо работает, когда монитор — старый CRT.
Взаимоисключающее с предыдущим «правило»: начинают искать системный блок у iMac. Удивляются, когда не находят.
Дискета — футляр для диска. Классика!
Не могут отличить графический планшет от планшета, который Tablet PC. На полном серьёзе спрашивают, «как эта штука включается».
Smart TV. Очень странно, что люди даже понятия не имеют, что их телевизор можно подключить к интернету. Всегда интересно, каким местом они читали инструкцию.
Наоборот: «Поставь мне интернет на мой старенький CRT-телевизор Sony». Обычно решается вопросом: «Зачем?!», в особо клинических случаях — покупкой приставки.
Засунуть в COM-порт монитор (это ж какую силу иметь надо!). Нет, а что, разъёмы-то похожие!
Роутеры — отдельная тема. Вы когда-нибудь видели человека, которому пришлось объяснять (точнее, вдалбливать), что роутер — это не dial up, и что телефон будет работать, так как подключение через Ethernet. И что роутер не может работать без Ethernet. И что за него тоже надо платить. Я, к сожалению, видел…
Сколько раз можно объяснять, что приставка для ТВ — это не всегда игровая приставка?
Всё ещё есть телефоны, формат приложений для которых — SIS
или же CAB
, и на них нет новомодного Google Play или App Store. Но некоторые личности просят поставить Google Play на свой iPAQ или что-нибудь подобное.
Это было одно из первых собеседований, когда я последний раз искал работу. До этого работа, как это бывает, сама меня находила, но
Первые вопросы мне задавала симпатичная девочка-эйчар, и я старательно показывал, что кипы видео «как вести себя на собеседовании» и груды статей на ту же тему просмотрел не зря. Но минут через несколько пришёл действующий админ, остановил девочку словами: «Это всё шелуха, это нас не интересует», — и вытащил небольшой такой опросник пунктов на сорок.
За полчаса он знал всё о моих реальных знаниях, хотя, мне кажется, общее представление составил минут за пять, не более. Девочка-эйчар смотрела на него глазами влюблённого кролика, я (как я теперь осознаю) — завистливо-озлобленного «специалиста», внезапно осознавшего, что он не знает ничего.
Не знаю, что сподвигло его на дальнейшую трату времени на меня. За эти полчаса он сам ответил на изрядную часть вопросов и объяснил, где я заблуждаюсь. Это получасовое собеседование было более информативным, чем годы универа и пять лет работы-где-попало-лишь-бы-не-сдохнуть. Причём всё это было замаскировано под беседу с кандидатом. Разумеется, это собеседование я завалил, но на следующих мне было куда как проще.
С того собеседования прошло больше двух лет, а я, разиня, только сейчас и додумался, как поблагодарить. Спасибо тебе, коллега! Если где всё же столкнёмся — с меня пиво.
Куртки из синтетики — это выгодно, тепло и иногда даже красиво. Ноутбуки с металлическим корпусом — это стильно, надёжно и чаще всего красиво…
…но, как выяснилось, не очень совместимо. Лёгкая искра на пальце — и ноутбук тухнет. На осознание случившегося потребовалась минута, затем час был потрачен на пересказ словаря непечатных выражений. Во сколько обойдётся ремонт, представить страшно. А ведь достаточно было коснуться батареи после снятия злосчастной куртки…
Как согреться бедной одинокой студентке, если всевозможные обогреватели строго запрещены и жестоко караются, а отопления в связи с «економією енергоносіїв» фактически нет?
Берём ноутбук (в нашем случае — Харитона Петровича трёхлетней давности).
Запускаем Everest, мониторим температуру при различной нагрузке. Лицезреем «above 100» на чипе видеокарты, роняем челюсть.
Поднимаем челюсть, разбираем ноутбук, чистим, собираем обратно.
Повторяем шаг 2. Температура незначительно, но всё же падает.
Запускаем Furmark.
Ждём (часа три — для комнаты, минут десять — под одеялом).
PROFIT!
Можно использовать потоковое видео (температура выше 80 не поднимается) либо тяжёлые игры. Минусы: к ноутбуку сползаются усатые твари, которым тоже холодно.
Можно, конечно, парня позвать с очевидной целью, но мы же не ищем лёгких путей!
Ремонтировали мы как-то с дамой сердца убитые ухи. Вроде бы ничего такого, каждый радиолюбитель приходит к тому, что нечто можно перепаять вместо покупки заново, но тут в дело вмешалась весна. Произошёл следующий диалог с другом дамы сердца:
— Ну, вы же там вдвоём… наедине… И?
— И… И перед моим отъездом мы до трёх ночи… паяли наушники.
— У-у-у, как грязно! Занятие только для настоящих ценителей.
— О да-а-а! Тягучая канифоль курится сладким дымом… Металлический блеск припоя в дрожащем свете неяркой лампы… Края одного провода туго стянуты изолентой, так ограничивающей их свободу… А к другому уже прижался большой горячий паяльник! Несколько жарких мгновений — и тонкие проводки сливаются в экстазе. Пайка завершена!
Забавная штука — газета Metro. Прочитал в ней как-то анекдот о женщине, подыскивающей себе мужа по анкетам. Один из кандидатов подходил ну прямо по всем-всем параметрам. Но стоило ей узнать, что он играет в «танки», как она принялась читать анкету следующего.
А потом была статья на весь разворот о жилище будущего, в котором, в частности, будет так называемая геймерская. Совместное участие в играх в ней сплотит семью.
Игра-разделитель и игра-объединитель. Взаимоисключающие параграфы? Нет. Снимает не фотограф, снимает камера. И разделяет или объединяет не игра, а игрок.
В вашей малогабаритной квартире нет места для геймерской? Не беда. Начните с малого. В маркет за двухпользовательской
Как-то наш офис решил переехать. И время было выбрано, конечно, самое удобное — 28 декабря! Ну, делать нечего, будем переезжать. Так как всё это делалось в целях экономии, по максимуму забирали старьё. Вот я схватил кучу всего плюс две бэушных патч-панели, которые смог освободить. Одна панель была с маркировкой, вторая без, поэтому для примера я оставил на одном порту необрезанные провода и сделал фотографию.
Ах да, важное примечание: в офисе этом я работаю всего год, поэтому в разводке сетей (которые были протянуты лет десять назад) участия не принимал.
Вот я всё смонтировал, забил кабели и приступил к проверке. Хотя в монтажном деле ошибок у меня уже давно не было, я проверяю каждый порт. И вот она, ошибка: кабель звонится неправильно. Я достаю телефон, смотрю на фотку патч-панели до обрезания — всё правильно. Разбираю розетку — всё правильно. Кабель от розетки до панели звонится нормально, проблема в самой панели. Чудеса… Хотя чудес-то не бывает.
Ладно, думаю, патч-панель старая, может, дорожка на плате отошла или ещё что. Проверяю дальше. Один порт нормальный, следующий — опять проблемный. Да что такое?! Тестер остался в старом офисе, у меня с собой только прозвонка. Проверяю дальше — через один нерабочие порты. Так вот где собака порылась! На обратной стороне патч-панели порты разведены на два ряда: чётные и нечётные. Верхние не работают, нижние в порядке. Пробую подключить один нерабочий порт по схеме. Запахало! Да чтоб меня! Достаю фотку — нет, и верхние, и нижние были подключены одинаково, то есть провода и сверху, и снизу в одинаковой последовательности по цветам. Но чтобы всё работало на верхней панели, нужно поменять оранжевую и зелёную пары. Сижу и думаю: а как оно раньше работало-то?..
Вопрос разрешился, когда я начал подключать технику старыми патч-кордами. После мата на высшие силы обнаружилось, что часть кабелей была обжата по стандартам A и B на разных концах. Так прежний админ вышел из ситуации, чтобы не переделывать патч-панель.
Cтавь под сомнение работу других, ибо лени человеческой нет предела.
Тут один человек предлагал «выбирать технологии», дабы освободиться от быдлокода. Я тут валяюсь под столом и пытаюсь сквозь смех написать…
Так уж повелось, что программист на порядок чаще читает код, нежели пишет, причём, скорее всего, код этот чужой. Весьма вероятно, его писали где-нибудь в середине мезозоя, и последний тираннозавр, который в нём соображал, погиб от злосчастного астероида. Да и стандарты кодирования тогда были другие, если были вообще. К примеру, писать комменты на перфокартах — зто замедлять загрузку почём зря, это плохо. Логично?
И тут приходит такой из себя хомо сапиенс и говорит, что для данной задачи нужен другой инструмент и/или фреймворк. Да кто бы тебя спрашивал! Даже если и прав, код уже написан. Когда софт писали, не было этих фреймворков. К тому же фреймворк определяется другими факторами. Язык программирования и тип задачи практически однозначно укажут на фреймворк. C# для GUI-приложения автоматически даёт Windows Forms, Delphi даёт VCL — и выбирать не приходится.
Таки да, есть много умных книг, как писать программы, даже как их рефакторить. Есть куча людей, которые посоветуют тебе, какие инструменты выбрать под новую задачу. Но, блин, кто-нибудь, напишите, пожалуйста, книгу, что делать с уже написанным кодом! Код уже есть, писать его не надо, проехали, но объясните, как теперь с ним жить!
Сижу вот. Восемь миллионов строк. Поддерживать нереально: слишком много. Разобраться нереально: решаемые кодом задачи заумные. Рефакторить нереально: надо разбираться в сути вопроса, чтоб рефакторить. Заново переписать восемь лямов тоже нереально: займёт те же лет двадцать. Выкинуть код нереально: доход от продаж с этого продукта выражается семью нулями зелени. Ну и?.. Any ideas, как говорят на том берегу атлантической лужи?
Фух, отпустило. Проржался. C грустным видом вылезаю из-под стола, чтобы тупить в очередной кусок кода…
А Балда приговаривал с укоризной:
«Не гонялся бы ты, поп, за дешевизной!»
Приехал я в одно из подразделений за 60 км обновлять парк техники, предварительно подготовив всё ПО на компьютерах. Подключил начальнику новый компьютер, новый широкоформатный монитор, новые клавиатуру с мышью. Ввожу доменный пароль — «Неправильный пароль или имя пользователя». Что такое?! С пятого раза пароль принял. Вышел из системы, снова пытаюсь войти — снова «Неправильный пароль». С десятого раза вошёл. Перезагрузился, ввожу пароль локального админа — снова не принимает. Раз пятнадцать пробую — не принимает. Отключаю комп, подключаю начальнику обратно старый тормозящий системник, везу новый «домой» на диагностику.
Подключаю клавиатуру, мышь, цепляю монитор. Загрузка, Ctrl+Alt+Del, пароль, приветствие. Что за чертовщина? Гоняю в хвост и в гриву. Заходит в систему с каждым вводом пароля без запинки и с локальными, и с доменными учётными записями. Много думал, пришёл к странной мысли: виновата новая USB-клавиатура, которая осталась подключённой к старому системнику и прекрасно там работает. У себя ведь я подключил клавиатуру PS/2, а значит, всё дело в ней, но до последнего всё же сомневаюсь.
Еду снова туда же по другим делам, заодно и системник установить. Уже ожидая, что именно произойдёт, подключаю, ввожу логин-пароль… Так и есть: «Неправильный пароль»! Для приличия пытаюсь ещё пару раз. Беру старую PS/2-клавиатуру, ввожу те же логин и пароль — через пару секунд вижу рабочий стол.
Вывод следующий: решили топ-менеджеры отказаться от компьютеров от Харитона Петровича да сэкономить на самопальных сборках местных кулибинских фирм, получили расходы на ремонты да на транспорт, людей не послушали («Шта они понимают?»). Читали бы лучше сказки Пушкина — там всё до нас было написано.
Магазин. В очередной раз не в меру разбузившаяся бабушка. Никто её не обсчитывал, она сама это поняла, ещё раз просмотрев чек. К ней подошёл охранник и вежливл предупредил, что в торговом зале камера.
Такие бабушки отлично знают свои права:
— Нельзя скрытые камеры вешать! Либо открытые, либо табличку.
— Да вот же огромная открытая камера висит, ни разу внимания не обращали?
— Обращала, милок, обращала. Так это не телефонный аппарат перевёрнутый? Нельзя маскировать камеры под бытовые предметы!
Всё ведь знает!
Обтекаемый колпак, круглое тёмное стекло. В середине объектив, по периметру крупные ИК-диоды. Чем не дисковый телефон?
Совпадения в жизни бывают разные…
Полчаса назад — звонок. Неизвестный номер. Голос бабушки в районе 70–80 лет:
— Алло, вечер добрый! Извините, что так поздно, мне Света сказала, что вы поможете. (Какая Света? У меня много знакомых Свет, ну да ладно.) У меня так и так, то-то и то-то.
Ну, что по телефону, что через удалённое управление, но вроде бы всё настроил, починил, долго и муторно выслушивая причитания из разряда «Я ракетные двигатели проектировала, а с этой железкой справиться не могу» и по возможности молча старался всё исправить побыстрее.
Под конец, прощаясь, бабуля выдала фразу, после которой начался истерический смех:
— Спасибо вам огромное, Сергей! Я завтра вашей жене на работу занесу конфет и домашних пирожков. Пусть вам передаст, попробуете — понравится.
В общем, сижу смеюсь. Я Николай и уже три года как в разводе. Да и жену звали Анной, а не Светланой… Так что, уважаемый Сергей, с тебя 50% пирожков!
Большой и ужасно серьёзный институт автоматизации и робототехники в некой стране победившего капитализма. Целая группа инженеров (все — выходцы из экс-СССР) вечерами задерживается после работы на три-четыре часа и с сосредоточенными видом ковыряет квадрокоптер с камерой.
— А как оно будет ориентироваться?
— Метки у цели поклеим, чтобы сверху было видно.
— Не-е, какой-то костыль, надо, чтобы оно получало положение по GPS!
— Да вы чего, всё же элементарно! Цель темнее бетона и неоднородная. Повесить камеру и лазерный дальномер, заодно сможет само отличать груз от всяких обычных штук.
— Не-е, а вдруг что-то не то за груз примет? Не надо нам таких эвристических надстроек, задача-то детерминированная!
— А как с контролем высоты? На захвате нет датчиков, будет воздух хватать же!
— Может, метки на грузе с обратной связью? Какой-нибудь NFC?
— Не-е, дороговато выходит…
Так проходит два месяца. Ценных узлов угроблено на четырёхзначную сумму в местной валюте, несколько раз на испытания чудо-агрегата приезжала полиция, коллеги, лишённые русского духа экспериментаторства, крутят пальцем у виска, но результат достигнут.
На пятом этаже института здоровенный страшный квадрокоптер по расписанию вечером снимается с зарядной базы, подлетает к общему мусорному ведру, снимает клешнёй со специальных направляющих ручки мусорного пакета, тащит его по воздуху к окну, окно открывается сервомотором по BT-команде, коптер вытаскивает свой груз на улицу, несёт его 50 метров и роняет точно в стоящий во дворе большой мусорный бункер, после чего возвращается на базу.
Зато не надо выяснять, чья очередь выносить мусор.
Молодёжь… Считать удобным
Как сейчас помню счастье и радость после появления магнитных шнуров. Это было… Это было как попасть в будущее. И мысль: это же так просто, почему раньше никто не додумался?
А не додумались потому, что нам и лапти норм, зачем нам туфли?
Незалежная. Наши дни. Очень известный онлайн-супермаркет техники и не только. Возле ноутбука с шестизначной ценой красуется надпись:
При покупке — мышка в подарок!
Джон шёл с работы, привычно ориентируясь в лондонском тумане по едва заметным контурам. Вдруг возникла фигура туриста:
— Извините, в какую сторону к морю?
Джон ответил:
— Да здесь в любую сторону — к морю! Остров хренов…
Лёша размышлял о том, что лучше, Micro USB или Lightning. На стороне первого — распространённость зарядок, зато второй можно подключать любой стороной, не глядя. С этой мыслью он воткнул шнур питания в нетбук.
Любой стороной, не глядя! Столько лет пользуюсь, а не задумывался. Только сторон не две, а 360. Это в градусах. А в градах — 400. А с учётом отсутствия дискретности — бесконечность. И крепкий! Не то что дискредитировавший идею нокиевский «хоботок». И никаких чипов. Как в анекдоте: в любую сторону — к морю!
На экране бодро запереливалась заставка Android-x86. А в Olivetti отдельные умы задумались о выходе на мобильный рынок. Инженеры о чем-то оживлённо спорят, но в одном единодушны: новый разъём SoberPlug будет иметь в поперечном сечении форму сапога. Не спят и в Tadiran — там тоже хотят выпускать мобильники. Разъём будет напоминать по форме жало той отвёртки, которой их разбирают и собирают. Таким проще попасть не глядя — если он будет коаксиальным, а не со штырьками по вершинам. Стремится на рынок смартов и Rekam. Чего? Кленовый лист? Вот это уже сложнее…
Но это уже фантазии. Пусть лучше будет как есть — всё со всем совместимо. Так удобнее, а то не верит — достаньте из ящика стола аппарат середины двухтысячных и попробуйте купить зарядку.
Добрый день, коллеги по цеху! Я бы хотел уточнить один вопрос. Как вы считаете, крокодил — он больше длинный, чем зелёный, или наоборот? Я, честное слово, с большим непониманием читаю все эти истории о тупых менеджерах/бухгалтерах/секретарях и мудрых и благородных админах/программистах.
Начнём с начала, чтобы картина моего повествования выглядела полнее.
Решили вы открыть своё дело. Поздравляю вас с этим судьбоносным решением! Завертелось, денежки капают, всё хорошо. Но в определённый момент вы сталкиваетесь с дефицитом собственного времени. Вы нанимаете помощника, которому делегируете часть своих полномочий. Это первый и важнейший этап понимания того, что вы не бог и везде одновременно вам находиться, увы, не дано.
Идём дальше. Ваша фирма растёт, вы не справляетесь уже не только с основным профилем работ, но даже с документооборотом. Вы нанимаете секретаря. На первых порах для вас важнее, чтобы ваш помощник делал рутинную работу, занимающую основное время. Но вот к вам начинают обращаться представители серьёзных организаций, и вы сажаете в секретарское кресло девушку модельной внешности. А тихая ли она и исполнительная — тут уж решать вам.
Задумайтесь, дорогие коллеги, как выглядит ваше поведение со стороны. Ведь вы нанимались решать определённые задачи, как, кстати, и те, кого вы считаете тупыми.
Не нравится решение управленца? Так он тоже персонал. Ему тоже поставили задачу. Пытайтесь координировать усилия. Не вышло с управленцем — пишите начальству. Начальство не оценило вашей инициативы? Что ж, возможно, вы не видите всей картины.
Вы бы лучше организовали производство, ведь вы специалист? Требуйте перевода в управленцы. Уверен, начальство оценит ваши незаурядные таланты.
Надоело спорить с бухгалтерами/секретарями? Попробуйте в обед угостить их печенькой и ещё раз спросить, что именно и как не получается. Поверьте, в большинстве случаев это работает. Не вышло? Пишите начальству!
Запомните: добрым словом и письмом начальнику можно добиться большего, чем просто добрым словом.
До чего же интересно читать
То ли дело самоделки-лобзики! Их такое многообразие и так часто меняется состав, что жуки не успевают приспособиться. Можно собрать на свой вкус. Лобзик? Хорошее название для конструктора. Из него можно собрать бензопилу, а можно — станок с ЧПУ. А можно — такой же универсальный монструозный топор, как и у тех странных мужиков-лесорубов. Вот электропила-сучкорезка, вчера собрал. Работает идеально. А вот — большая бензопила типа «Дружбы». Вот пилорама. Что ж, не такая красивая и стоит не так дорого, как та, напротив. Да, и огоньков нет, рекламы по ночам. И не приезжает на трёх лимузинах техподдержка. Подарков от реселлеров тоже не видать. Работает третий год, я туда не захожу почти. Кушает втрое меньше электричества и умещается на куске земли в два раза меньше.
А ещё у меня есть три палки, трансформатор и пять кусков адамантитовой руды. Надо будет собрать ещё что-нибудь. Возможно, и не выйдет каменный цветок, но попробовать надо. Пусть и могу рассчитывать только на себя да толпу таких же фанатов открытых систем деревообработки.
Когда человек, умеющий читать документацию, ставит на ноутбук Линукс — выходит удивительно скучно. Он читает доки, потом запускает установщик, создаёт фиксированные разделы небольшого раздела под рут, /bin
, /usr
и /var
, а оставшиеся сотни гигов отдаёт под /home
. Ещё он читал доки на USB и знает, что ток на одну пару разъёмов не может превышать пол-ампера, поэтому дополнительный «хвост» от носимого жёсткого диска нужно втыкать в разъём из другой пары, желательно — подальше. В результате всё работает именно так, как хотелось с самого начала, и никакой байки из этого не получается.
Казалось бы, филология — наука о слове. И специалист в ней должен со словом дружить и уметь читать доки, благо сейчас в сети их более чем достаточно. Тогда и не будет историй про
Прочитал тут про страдания
Есть программы на Фортране. Язык весёлый. Констант в нём нет, а параметры в программу передаются исключительно по ссылке. То есть вызов call subr(1)
на самом деле передаёт в подпрограмму адрес переменной, в которой лежит единица. Значение переменной в подпрограмме можно изменить. Так я узнал, что в любой фортрановской программе есть как минимум четыре единицы (и четыре нуля, кстати), в общем случае не равные между собой. То, что print *, 0
выдаст именно «0», не гарантируется.
Есть программы на Паскале. Все пользовательские типы там именуются по простой схеме: Т1, T2, T3, T4… T55. Что вы, конечно же, есть распечатанный документ, где эти типы подробно описаны, для чего и как, но его потеряли. А переменные экономили, поэтому в разные моменты времени переменная используется для вычисления и хранения совершенно различных по смыслу значений. Поэтому называют их А1, А2, А3. Это не обфускатор. Люди реально так писали.
И, наконец, любимый С++. Реальная программа, которая лет десять назад неплохо продавалась по всему миру. Там есть три функции. Первые две содержат 45 и 35 тысяч строк. Раньше это была одна функция, но Visual C++ отказался компилировать файл больше 65К строк, и автор разбил функцию на две. Третья функция поменьше — 20 тысяч. Практически все 20 тысяч строк запиханы в отрисовку окна. Инициализация программы, парсинг DXF-файла с картой Земли, расчёт всякой астрономической фигни и, собственно, отрисовка.
Есть ещё 16 файлов машинно-генерённого С++ по мегабайту каждый, которые иногда приходится править вручную.
Могу продолжить, но мне уже грустно. А вы над 300 строками плачете…
Корпуса современных аппаратов редко рассчитаны на установку дополнительных элементов, а особо «продвинутые» совмещают кнопку включения питания с чем-то ещё, превращая два контакта в многожильный шлейф.
Удобство использования под вопросом. Вживлять магнит для геркона в кольцо или постоянно носить его в кармане, доставая всякий раз? А в случае утери что делать? В общем, не айс.
Кто и за какую мзду будет вшивать эту «секретку» в телефон, особенно с учётом пункта 1? Где гарантия, что местные Левши и Кулибины сделают всё по уму, а не как левая пятка прикажет? Да и стоимость работ (с учётом специфики) вряд ли обрадует, что резко понижает рентабельность.
Но при правильной реализации такая закладка может сослужить добрую службу. Проверено лично.
В результате работы Homo Rukozhopus (я менял себе разбитое стекло) мой телефон приобрёл особенность: кнопку включения нужно было давить очень сильно (лучше — часовой отвёрткой или зубами). После настройки софта для переназначения клавиш и покупки китайского чехла (без чётко пропечатанных кнопок) плюсы стали очевидными:
резко упало количество желающих поиграться: «Не включа-ается!»;
на блокпостах (при проверке документов там частенько требуют и телефоны) «сломанный» аппарат ни у кого не вызывает вопросов;
если вытащить батарею, без опыта включить телефон очень непросто. Точнее, почти невозможно. Пару раз спасало.
Есть, конечно, и минус такого решения: софт таки тянет батарею и занимает память. Но 5 мегабайт при гигабайте ОЗУ погоды не делают, правда? Да и это точно дешевле, чем покупать новую запчасть.
Вряд ли кто-то станет рубить дерево молотком. То есть по скудоумию, конечно, может попробовать, но ведь не получится.
Точно так же неудобно рубить дерево обухом топора. Тут вообще почти парадокс. Инструмент-то подходящий. Смотрит такой (ну, назовём его эникеем) на топор, на картинки из мануала — всё ж подходит. Вот дерево, вот инструмент для рубки деревьев, а оно не рубит. Никак. А почему? Да потому, что дерево рубят другой стороной топора.
Мало того, что наш герой рубит деревья молотком или обухом топора, так он ещё и сразу бежит к ближайшему пригорку и с него поднимает крик о том, что вот, дескать, купил молоток, а он не рубит. «Тоже мне кузнец, — говорит герой, — делает молотки, которыми рубить деревья вообще невозможно». Мол, я хотел срубить дерево молотком, а как? Не получается! А про топоры вообще говорить не приходится. И, главное, негодяй такой, совести хватает рассказывать, что топорами хорошо деревья рубить. Да ничего подобного! Купили мы на фирму два топора, я обухом бил-бил по дереву — ничего! Без толку! Лучше бы резиновым фаллоимитатором колотил — больше пользы было бы. Осталось ощущение, будто кузнец лично надо мной надругался.
То ли дело — лобзик из набора «Сделай сам»! Да, долго, да, неудобно, да, ломается постоянно, но ведь работает же! А сломанную пилку я сам заменить могу. В прошлом месяце такую сосну им спилил — закачаешься.
Понаделали, понимаешь, гламурных топоров с блестящими лезвиями, ходят лесорубы, понтуются ими. Нет, чтобы с лобзиками ходили. Да, а кузнец знаете сколько за свои топоры просит? Совести нет совсем! За гламурные блестящие топоры, которыми я не могу ни одного дерева срубить, такие деньжищи!
Я надеюсь, аллегорию все поняли? Разъяснять не нужно, потому что, во-первых, потеряется весь смысл, а во-вторых, тем, кто не понял, разъяснять и не нужно.
Делаем большой интересный серверный проект. В прошлом месяце начальство внезапно постановило: нужно, чтобы сервер умел вставать на паузу! Ну, и ТЗ, как он это должен делать. В частности, перед уходом на паузу сервер должен успеть обработать и выдать все принятые пакеты. Архитектура многопоточная: сетевой поток, занимающийся как отправкой, так и приёмом пакетов, UI-поток, принимающий и обрабатывающий пользовательские команды, SQLworkers, UtilityWorkers и куча рабочих потоков.
Все потоки умеют обмениваться данными только через очередь сообщений. Поэтому, как только добавлено новое сообщение в очередь, поток снимается с паузы, шлёт запрос потоку UI — надо ли ему становиться на паузу, потом обрабатывает сообщение и нормально работает, пока не придёт пакет с подтверждением паузы. Но ТЗ есть, так что мы его тупо реализуем, не особо задумываясь.
Реализовали, отправили тестировщикам. На следующий день пришёл ответ.
Я был сильно озадачен результатом применения паузы под серьёзной нагрузкой. Сперва поток UI рассылает всем приказ встать на паузу, затем сам становится на паузу. NetWorker моментально становится на паузу: он очень быстро всё принимает и отправляет. Воркеры так же быстро становятся на паузу, а вот один из SQLworkers при обработке запросов
INSERT/UPDATE [имя очень тяжёлой таблицы]
может очень долго ждать ответа от БД. И как только он его получит, он сделает запись в лог об этом, разбудив поток UtilityWorker, потом кидает результат в общий пул сообщений, разбудив пул воркеров, потом этот пакет будит NetWorker. В то же время поток UIworker не пробуждается от запроса в очередь сообщений.В итоге мы получаем полностью рабочий сервис со спящим потоком UIworker, разбудить который может только пользователь… Который сделать этого не может, ибо спящий UIworker не обрабатывает поступающие команды.
Теперь поток UI никогда не может встать на паузу.
«Секретка» — штука, знакомая многим водителям. Конечно, применять её вместо сигнализации может лишь очень отчаянный человек, но в дополнение — очень эффективно.
А почему же этот приём неведом владельцам смартфонов? Даже простой геркон последовательно с кнопкой разблокировки обескуражит процентов 70 воришек, а это не так уж мало. Ну вот, один секрет — больше не секрет, но можно других напридумывать сколько угодно.
Если бы не одно «но». Гарантийный аппарат установка «секретки» лишит гарантии, а послегарантийные воришек интересуют в меньшей степени.
Один класс (имя не отражает сущность — кого это волнует?) и сотня функций. Казалось бы, нормально. Нормально?! Ни хрена это не нормально, когда поля класса расположены случайным образом между функциями. Именование переменных, бизнес-правила? Да ну их в большой сочный болт! Метод, внутри которого переменные t
, p
, x
, а некоторые и глобальные — вот что здесь норма.
Вы думаете, это всё? Да я молился, чтоб этом было «всем». Это творение подключалось к базе Аксесса. Банально через датасеты. Банально? Ну да, слишком банально. Один датагрид, пять таблиц, поэтому что? Правильно: надо пять датасетов! Имена… А что имена? Имя как имя: 50 символов, начинается латиницей, продолжается русским капсом (тысяча блудниц!) и заканчивается цифролатиницей. И их пять. Пять таких датасетов в одной форме. На один датагрид. А знаете, какой запрос в каждом из пяти датасетов? Глаза вытекают: SELECT * FROM [dataTableName];
.
Про форматирование кода после предыдущего даже писать как-то мелочно.
Функция. Да-да, именно так: Функция. Особая примета: входной параметр — y
, выходной — x
. 150 строк. Шта? Ладно. Следующая. 230. Шта-а-а? А дальше скромная ФУНКЦИЯ. 320 строк. Мои глаза невозможно было представить, пока я не увидел следующую (правда, всю закомментированную однострочными комментариями) на 400 строк. Я не знаю, как про это говорить.
Похоже, я должен требовать ящик валерьянки в неделю как расходные материалы.
В среде «настоящих программистов» бытует мнение, что одна известная операционная система ввиду особенностей своей архитектуры склонна к багам и глюкам, а вот другая — ого-го! Надёжная, как танк, хоть и не особо распространённая среди рядовых пользователей. Ну, в общем, что-то в этом есть; во всяком случае, сам я пользуюсь исключительно второй, мне так удобнее. Но история эта будет о том, как непродуманность в деталях может испортить даже надёжную систему.
Сижу, пишу код, отлаживаю. В очередной раз баг: система уходит в бесконечную рекурсию, бодренько выжирая оперативную память и своп. Как должна себя повести программа в таком случае? Выжрав всю память, она должна упасть в «корку» и больше не подняться. Ну, так обычно кривые программы ведут себя на серверах.
Но так будет скучно, неинтересно и без всякой интриги. Ведь в нашей ОС, слегка заточенной для удобства юзера, есть замечательная система, предназначенная для перехвата подобных событий и информирования разработчиков о проблеме!
Программа выкушала всю память, собралась тихо умереть — и вот тут-то на помощь спешит наша система помощи разработчикам. Поскольку написана она на модном нынче змеевидном интерпретируемом языке, просто так запуститься она не может: поднимается интерпретатор, начинают обрабатываться скрипты с кучей библиотек. Но что-то идёт не так: памяти-то нет.
Бида-бида! Мало того, что упала какая-то там программа — теперь падает и наша система помощи. Ей срочно нужно помочь!
Запускается вторая копия: поднимается интерпретатор, начинают обрабатываться скрипты… Удивительно, но памяти опять не хватает.
Несчастная глючная программа уже давно убита, но бой за память продолжается: один за другим стартуют экземпляры системы и погибают в неравной борьбе за ресурсы.
Прекратить это безобразие удалось лишь путём прицельного убийства всех подозрительных процессов. Отправить отчёт об ошибке разработчикам они так и не смогли, но зато хоть работоспособность компьютера восстановилась.
А всё потому, что чрезмерная инициативность железяки — зло!
При прочтении истории «
Дерево выросло и местами обросло киянками, как спелыми плодами. Достаточно слегка пнуть — и готовый молоток падает тебе в руки. В варианте же с Apple нередки случаи, когда они самопроизвольно превращаются в елду, и хорошо если в резиновую.
Вы говорите о решении задачи? Извольте.
В связи не помню с чем — в общем, по приказу Очень Главных Людей нужно было поставить планшет в количестве двух штук в холле для использования клиентами. Задача была поставлена предельно просто: на планшетах, кроме браузера, клиент ничего не запускает и может лазить только по сайту компании. Для экспериментов тут же были выданы два андроид-планшета, на которых в течение получаса (из которых 20 минут ушло на заведение гугловской учётки и базовую настройку аппаратов) я всё настроил. Пользователь до ввода пароля браузер даже закрыть не может, а перемещаться по нему может только в пределах нашего сайта. Тулза, к слову, совершенно бесплатная, легковесная и простая, как… молоток.
Однако не всё было так радужно, как хотелось бы: андроидовские планшеты кому-то не понравились, были забракованы и заменены на яблочные. Казалось бы, что может быть проще: встроенный родительский контроль позволит заблокировать всё, кроме того, что можно. И действительно, с этим проблем не возникло, а вот с ограничением запуска приложений возникла проблема. Нашли одно-единственное решение, которое требовало джейлбрейка, который мы сделать не могли по причине слишком свежего обновления. Возникло ощущение, что заказал молоток, а тебе подсунули в красивой строгой упаковке облепленное сертификатами соответствия молотку то самое резиновое изделие, да ещё и с моторчиком.
Не хочу утверждать, что Android круче iOS. Вроде бы и так понятно: нам нужно «ехать, а не шашечки». Просто бывают случаи, когда «включил — и работает, как устраивает», а бывает — «включил, настроил — работает так, как надо».
Есть ОС реального времени, а есть остальные. Виды человеческой деятельности тоже делятся по этому критерию. Одни требуют молниеносной реакции (водитель, лётчик). Кто этим качеством не наделён, тому они противопоказаны. Другие таковой не требуют (программист, переводчик, телемастер). Они даже могут быть опасными, как в случае с телемастером, но избежать опасности в них можно и без быстрой реакции.
Смартфон — не самолёт. Ваш К. О. От его интерфейса требуется обеспечение не быстроты реакции пользователя, а его длительной неутомляемости. Но причём здесь лаунчер? Сколько процентов времени пользователь любой мобильной ОС проводит за ним? Согласно старому анекдоту, IE — полезный инструмент для скачивания браузеров. И лаунчер — полезный инструмент для запуска приложений.
Вот и эргономику обеспечивать — задача разработчиков не лаунчеров, а приложений. А на лаунчере могут оторваться художники. Как хотят, не задумываясь особо об эргономике. Главное — сделать хорошо заметной кнопку экстренного вызова, о чём почему-то не позаботился никто из трёх лидеров рынка мобильных ОС. В остальном — хоть Дали передразнивайте!
А вот тем, кто пишет приложения, стоит попробовать попользоваться своими разработками самим. И станет ясно, где и что лучше сделать удобнее.
И это всё о ней — об ауре админской.
После роутера, плеера и этой вашей «семёрки» решил подруге поставить кошерную систему с бубном на логотипе, тем более что у неё новенький ноут. Поставить поставил, но настроить всё не успел: время поджимало.
Звонит подруга и жалуется: мол, не хватает места на файлы со старой машинки. Копирует банально на рабочий стол (админы, молчать!) более 50 гиг, тогда как под систему отведено лишь 20.
Прошу дать трансляцию экрана скайпом, объясняю, где найти примонтированный раздел с красноречивым названием /userdata
, как вытащить ярлычок на рабочий стол, как выставить права на папку для определённой учетки. Вроде всё, начинается копирование с внешнего жёсткого — валятся ошибки на отсутствие доступа, отсутствие файлов и отсутствие отсутствия. WTF?!
Прошу переподключить винт — те же яйца, только в профиль. Грешу на USB, но опознается же! Тупо смотрю на свой ноут той же серии, только постарше — конфигурация USB почти идентична.
Идея! Уточняю — оказывается, да, жёсткий умеет данные по одному кабелю, питание — по другому. Подруга делает несложную рокировку — voilà! Копирование идёт без ошибок.
Ауру на всякий случай не гашу, а то мало ли… Ну, и кто теперь скажет, что филологи ни рожна понимают в этих наших линуксах?
Работаю в большом IT-отделе большой компании. Месяц назад руководство отдела заметило необычную сетевую активность с одного из ПК во внерабочее время. Полетели теории заговора, крики о взломе и краже конфиденциальной информации. Начали внутреннее расследование.
Во внерабочее время к корпоративной сети по внутреннему VPN подключался некий пользователь и активно использовал определённый ПК. Проверили логи машины — подключение происходило по RDP. У пользователей во внерабочее время есть доступ к своим ПК по этому протоколу. Начали отслеживать источник VPN; адрес оказался в списке доверенных, там же нашлось имя владельца. Разыскали сотрудника (оказался один из сотрудников IT-отдела), начали расспрос.
Сотрудник принципиально не хотел иметь дома Windows и разбираться с эмулятором, но любил играть в старые Windows-only игрушки (типа Fallout). Выбрав в жертвы ничем не примечательный комп, он создал на нём локальную учётную запись и играл в любимые игры, подключаясь по RDP.
Конечно, в этом не было ничего криминального, но сотрудника уволили за установку и использование игрового ПО на рабочем ПК.
Всё-таки айтишники смешные. Облил дерьмом, сбил с ног и ещё раз пнул напоследок изделие яблочной компании, а потом гордо поделился тем, что купил китайский клон китайского же клона. Но весь такой замечательный, с телевизором и двумя симками, хоть и ноутбук. Я не против — счастья всем с их покупками. Но дальше идёт полторы страницы описаний войны с этим клоном. И это не работает, и то не запускается, но герой истории яростно борется с недомоганиями техники и, разумеется, побеждает, счастливый донельзя.
У меня возникает справедливый вопрос: так вам ваша техника нужна была не для решения каких-то задач, а для того, чтобы в ней ковыряться?
Я бы хотел собрать побольше статистики. Возможно, будет рентабельно производить какую-нибудь дрянь с заложенными в неё недоделками, чтобы её покупали не с целью сделать какую-то работу, а с целью бесконечно ковыряться. И апгрейды выпускать: «Купите новую видеокарту, и вам будет чем заняться в выходные!» и «Ваша жена полюбит наши перегревающиеся процессоры!»
Айтишники не понимают простую вещь: все эти компьютеры, смартфоны и прочие гаджеты существуют для решения задач, а не для того, чтобы в них ковыряться. Как машина нужна для того, чтобы из точки А попадать в точку Б, а не для того, чтобы стоять в гараже с поднятым капотом, так и компьютер нужен для того, чтобы написать рассказ, отправить письмо, нарисовать чертёж, а не для того, чтобы вечно менять термопасту на процессоре. Я больше скажу: ОС тоже нужна для того, чтобы решать задачи, а не для того, чтобы компилировать ядро.
Вроде бы технари, вроде бы должны видеть корень вопроса, но нет — всё сводится к бесконечному ковырянию ради ковыряния.
И не дай бог, если такой «ковырятель» заведётся на производстве — пиши пропало. Работы не будет. Будет царь и бог, а все остальные — бесполезные менеджеры у его ног.
Учишь их, учишь — а их всё больше. Беда прям.
О том, что взаимоотношения айтишников со «Свидетелями Иеговы» действительно стремительно превращаются в мем, свидетельствуют и эти мои пять копеек.
Иду себе по улице, и тут вручает мне представитель этой организации открытку. Открываю, а она, оказывается, по типу старых музыкальных. Звучит мелодия, а затем приятный голос интересуется:
— У вас есть вопросы к нашей организации?
Кто-то из взявших открытки начинает задавать вопросы, кто-то — троллить, кто-то — выбрасывает, а другие тут же подбирают себе ещё экземпляры. Среди последних — и я. Надо ли говорить, что речь об айтишниках?
Из айтишников самые нетерпеливые дербанят открытки на динамики, микрофоны и аккумуляторы — всё пригодится! Более дотошные ищут на китайских сайтах даташиты на «cellphone greeting card blank». Ага, вот сюда подключить можно матрицу клавиатуры, а сюда — зарядное! И симку поставить любую — готов бабушкофон. Только зачем он айтишнику? Так ведь уксус сладок!
О, если б всё это было не сном!
Ребята, сравнивающие компьютер с девушкой, а процесс инсталляции и апдейта с сексом! Я понимаю: весна близко. Всё, что имеет отверстие, начинает казаться женского пола. Но всё-таки не надо перегибать.
Компьютер — это набор микросхем. Без воли. Без эмоций. Без разума. Он выполняет инструкции, созданные программистами, и совершенно не переживает о конечном результате. Успешное завершение, пауза или отмена — ему вообще пофиг. А вот пользователю — нет. Поэтому любое пользовательское приложение, выполняющееся в многозадачной системе и дающее большую нагрузку на процессор или диск, должно иметь кнопки паузы и отмены. Их ставят на антивирусы и дисковые утилиты. Их ставят на тяжёлые приложения, где выполнение рендера занимает больше минуты. На апдейтеры их тоже ставят. И единственная причина, по которой конкретный апдейтер может не иметь кнопок паузы-отмены — это экономия на разработке. И если от какого-нибудь нонейм-приложения это вполне ожидаемо (я видел апдейтер, например, который просто делал svn up
в треде, а прогресс-бар рисовал для красоты), то когда так поступают солидные компании — это или неуважение к пользователям, или крайняя степень «оптимизации расходов». В обоих случаях стоит задуматься: а нужен ли вам софт именно от этой компании? Если нужен — жалуйтесь в техподдержку. Обычно по достижении критического количества жалоб новую фичу всё же прикручивают.
Не первый раз встречаю здесь упоминания компа (блока питания), сгоревшего из-за скачка напряжения. Ребят, ну вот не верю я, что вы нормальные специалисты. И ни за что не доверил бы конторскую сеть таким.
Мозги либо есть, либо их нет. Может, вы там круто в своих гигатехнологиях разбираетесь и вообще мегаузкие специалисты, но это же обычный житейский вопрос! Вы, простите, попу в туалете себе подтереть тоже отдельного спеца приглашаете? А как вы стиральной машинкой пользуетесь — боюсь даже представить.
Итак, простая математика. Возьмём типовую ситуацию: в целом напряжение в городе стабильно, но изредка кто-то что-то не туда включает или путает фазу, и приходит большой северный лис.
Итак, стоимость компа — от 10 тысяч, телевизора — от 5 тысяч, стиралки — ну, пусть от 15 (это ещё без поправки на кризис). Ладно, пусть даже блок управления от стиралки стоит тысяч шесть с заменой. Плюс там варочная поверхность, микроволновка…
Сравним.
Цена диковинной штуки под названием «реле контроля напряжения» (РКН) — от двух до шести тысяч рублей. Если всё совсем плохо — добавим ограничитель импульсных помех (грозозащиту). Прямой удар молнии нам выдерживать не надо, так что берём простенький, на 5–15 кА. Это ещё пара-тройка тысяч. Всё вместе занимает на DIN-рейке в щитке четыре-шесть позиций.
И всё! Все эти страшные электрокатаклизмы для вас теперь выливаются в отключение питания на десяток секунд, пока сеть не нормализуется. В самом худшем случае выбьет вводной автомат вместо выгорания всего и вся.
Я у себя в новостройке поставил такое с год назад. Недавно супруга жаловалась, что свет отключался на полминуты. А потом по воплям на домовом форуме мы узнали, что защита-то у нас, оказывается, уже окупилась.
Что самое забавное — потом вы же тут смеете ругаться на «тупых юзверей», не умеющих отличить такие ясные и понятные пункты меню, как «Отменить» и «Отмена».
Всем котиков, и впредь желаю о неприятностях только в газете читать.
Да, все мы мечтаем поставить всё на паузу: секс, настройку ролей Windows Server, даже установку Linux мы хотели бы поставить на паузу. Мы хотим поставить на паузу всё. Только вот думал ли кто-то, что не всё так просто?
Представьте, что вы занимаетесь сексом с девушкой. Вы готовы этот момент поставить на паузу? А правильно ли в этом случае отреагировала бы ваша девушка? Вот и сервер вряд ли. А всё почему? А нельзя просто так останавливать процесс по вашей воле. Начав этот процесс, вы уже не принадлежите себе. Вы принадлежите как минимум вам двоим. И если вас сподвигло что-то остановить процесс, может, не стоило начинать?
В силу специфики отрасли работать приходится в команде с разными людьми, специалистами в тех или иных областях программирования. Всё бы ничего, но порой удивляют.
Вот попадается упёртый товарищ с синдромом утёнка: когда-то он освоил систему ХХХ, работает с ней, только с ней и ни с чем иным.
— Попробуем сделать вот так?
— Нет!
— Ну, может, вот это заменим?
— Нет и нет!
— Почему?!
— Потому что ХХХ — лучшее, что было создано с начала времён!
Другой, наоборот, модный и современный:
— На прошлой неделе анонсировали YYY! Крутая штука, я уже попробовал, офигенно!
— Погоди, там вон то не доделано, баги не пофикшены, а вот это вообще глючит…
— Ты ретроград! Всё передовое человечество!.. А ты!
Третий — раб массовки:
— Надо делать вот так, так все делают!
— Но в нашем случае это же неудобно.
— Ну и что, так все делают! Понимаешь, все!
Четвёртый — раб авторитетов:
— У тебя неправильно: вот эту штуку надо делать вот так.
— Почему?
— Так завещал Великий Гуру, так учит Его статья в самом авторитетном журнале!
— Но ведь твой гуру говорил про свой частный случай, когда…
— Он не мог ошибаться! Ты хочешь сказать, что знаешь лучше?!
Сам я тоже не идеален и иногда упираюсь, но у меня хотя бы аргументы есть. Скажем, мне не нравится один популярный язык программирования, не нравился никогда, потому что крив и глючен. Иной раз посмотришь на новую версию, видишь, что лучше не стало — и аргументы остаются в силе: он по-прежнему крив и глючен. Покажите мне, что кривизну исправили — и я поменяю своё мнение. Но вот так упираться, основываясь на привычке, моде, массовости и вере, — зачем?!
Те, кто застал первые сайты, должен помнить: тогдашние веб-мастера всем элементам на экране придавали объём, рисуя «выпуклые» и «вдавленные» рамки. Если на экране таблица — она как будто сделана из проволочек. Если кнопка — то выпирающая из плоскости. Примерно так же выглядели программы, написанные в самой популярной среде разработки того времени — Дельфи.
Программы на Дельфи начали терять актуальность, а пришедшие им на смену часто использовали виджеты из MFC — с тонкими линиями, если и придающими объём, то чуть-чуть. И веб-дизайн отреагировал: строгие тёмные тонкие рамки в пиксель вокруг кнопок и ячеек таблиц.
Что же касается цветового решения — одно время был мегапопулярен вырвиглазный сине-зелёный дизайн, удивительно напоминающий тему по умолчанию Windows XP. Но вот вышла версия Windows с новым интерфейсом Aero, и в веб-дизайне начали использовать стиль «Веб 2.0» — полупрозрачные элементы, трёхмерные кнопки с полутенями и градиентами.
И вот сейчас одно из последних веяний моды — плитки с монохромными пиктограммами. Догадаетесь, откуда это?
Дизайнеры, может, хватит уже тырить чужие идеи, просто срисовывая интерфейс программ, за которыми вы сидите? Или тогда не называйте это дизайном.
А написать сюда заставила мелочь: на одном из сайтов, когда приходило личное сообщение, в строке статуса загоралась красная лампочка. Удобно: красная точка — что-то пришло. Но дизайнеры не дремлют, и теперь вместо этой лампочки — белый кружочек. Если новых сообщений нет — он чуть сероватый, если есть — становится белее. Вот и сиди теперь, вглядывайся: достаточно ли он белый, чтобы идти читать почту, или, может, не очень белый?
Руки пообрывать! Если у одной компании возникли какие-то сложности с отображением хотя бы 256 цветов в своём интерфейсе, то вы-то зачем уподобляетесь?
Звонит с утра клиент: «У нас интернет не работает! Почините скорейше!»
Щас, починим… PuTTY, Load, Оpen… Инет-шлюз доступен. Хм. Ну ладно, давай перезагрузим, может, повисло чего…
Набираю в консоли ещё не отогревшимися пальцами:
> shutdown -r niow
Bad time format!
Протираю глаза, разминаю пальцы, перенабираю:
> shutdown -r miow
Bad time format!
Да блин, вот непонятливая система! Мяу, говорю! Мяу! Прям сейчас мяу — и дай уже интернетов! Ухмыляюсь сам себе, перенабираю по человечески:
shutdown -r now
Полетело…
Выпендрёжный «плиточно-вебдванольный» дизайн с выплывающими вырвиглазными менюшками, рассчитанный исключительно на планшет, где картинки напрочь перекрывают контент (на сайте, извините, Analog Devices, не зайчиков-шнуфелей!) — это одно. Это то, что называется «вон из профессии». Когда сайт автомасштабируется под 640×480, старую мобилу, планшет и вайдскрин, меняя местами элементы дизайна — это совершенно другое.
Когда телефоны и планшеты принципиально не имеют аппаратной клавиатуры и приложения не могут работать без мультитача — это одно. Когда гаджет может иметь откидную QWERTY или, скажем, резистивный stylus-only экран для тех, кто любит в дороге рисовать — это совсем другое.
Когда операционная система для настольных ПК копирует интерфейс наладонников, которые имеют совершенно другую эргономику, их по-другому держат и используют, у них совершенно иное разрешение и размеры экрана, и получается в результате угробище Франкенштейна — это одно. Когда приложения с наладонников легко портируются на настольный ПК, а длинные нажатия заменяются на правые щелчки — это совсем другое.
Почему же вы всё время разрабатываете и производите одно и то же, хотя в своих мечтах и мыслях представляете это себе совершенно другим?
Устроился в небольшую компанию программистом. Компания предоставляет некоторые услуги своим клиентам. Но предоставляет крайне фигово: больше полусотни пользователей не держит.
Начинаю разбираться, что почём. Первым делом настораживает, что сессия длится один пакет. Следующий пакет так же должен быть с авторизационными данными.
— Ну, у нас же реализована архитектура «запрос — ответ»! Нам же не надо держать TCP-сессию! — говорит программист с 25-летним стажем.
— Гм, — говорю я и лезу в код сервера.
Лучше бы я этого не видел.
На каждый входящий пакет создаётся поток-обработчик, который умирает сразу же после того, как отсылает пакет обратно. И, естественно, убирает за собой все данные о клиенте. Что характерно, поток-получатель парсит HTTP-заголовок.
Начинаю переписывать код. Сперва создаю пул потоков-обработчиков, но очень быстро утыкаюсь в ситуацию, когда у меня 100500 потоков на 24-ядерной системе. В общем, ситуацию это спасает, но не намного.
Далее избавляюсь от авторизации: клиенту передаётся его сессионный ID, и уже дальше работаем с ним.
Потом избавляюсь от пула потоков, создав очередь запросов, из которой могут брать любые рабочие потоки.
Потом делаю ещё одну страшную вещь: переношу очередь запросов как можно ближе к получению пакетов, до парсинга HTTP-заголовка. Результат — восьмиядерный рабочий комп выдерживает стрессовую нагрузку до 100 тысяч пакетов в секунду.
На следующую неделю компания закрывается: в связи с кризисом отвалились три крупных клиента, и бюджета на программистов не хватает.
Испытываете трудности при отдачи контента порциями?
Вот вы зарелизили игру. Первый вопрос: как выкладывать? Одним большим куском или в развёрнутом виде? Тут вопросов не возникает — конечно же, большим куском, раскидать его по серверам поближе к клиентам, на площадки с доступом к основным магистралам. А вот небольшие патчи? Выкладывать сразу или творить кумулятивные обновления? Всего-то из изменений — брутального орка кто-то из локализаторов обозвал «МойЗайчик». Первая мысль была именно такая: давайте сбацаем торрент, и пущай клиенты с клиентов обновляются, меньше нагрузки на сервера, ведь при более-менее массовом апдейте нагрузка может подскочить на порядок, никаких «теньге» (10 Gigabit Ethernet) не хватит. Сделали. Водрузили Transmission на сервера — мол, обновляйтесь. Ой, что это? Почему скорость такая маленькая? А что это клиенты предпочитают качать с центра, а не с других клиентов? А неблагодарные клиенты, скачав обнову, тут же вырубают обновлятор, чтобы играть не мешал, из-за чего начинают выигрывать HTTP-пиры. Вот это и есть традиционные грабельки: гладко было на бумаге, да забыли про овраги…
Так и живём. Имеем кучу nginx, которые раздают или с общего стораджа, или по свистку синхронизируются сами. А найти сервер, который вдруг не поддерживает докачку, надо сильно постараться. Или на коленке самому написать. Nginx в том числе и для этого был создан, чтобы, не сильно потребляя ресурсы, мог отдавать кучу мелких файлов очень большому числу клиентов.
А теперь представьте, когда вы такое количество файлов обновили только наполовину. Да, проверяем целостность клиента, проверяем тысячи хешей, перекачиваем старые файлы. В результате какая-нибудь «ферма» убивает батарею недобука, когда хозяин сидит в «Макдональдсе» и пытается обновляться там. А ему ещё и каждые полчаса линк отключают: мол, переавторизоваться бы …
Счастья, чтобы никто обиженный не ушёл, не существует. Может, с приходом планшетов всё изменится?
День выдался, что называется, ни к черту. С утра сильно ушиб ногу, возникли проблемы на работе, из-за скачка напряжения сгорел домашний комп, потом с девушкой разругались в пух и прах… В общем, взял я запас спирта и курева да сел топить грусть-печаль в укромном месте. Вот только забыл я, что район этот не зря считается гопоопасным…
— Слышь, ты, дай денег!
Медленно поднимаю слегка осоловелый взгляд на источник звука. Этого следовало ожидать — типичный
— А на кой тебе? — язык, в отличие от мозга, среагировал почти моментально.
— Да купил, &^%, наушники и порвал их на $%&. А чё такое?
Действительно, на шее у вопрошающего висят новенькие Koss Porta Pro с оторванным от одного уха проводом.
— Ничё. Давай сюда, щас сделаем…
В полной прострации парень отдал покалеченные наушники. А дальше дело техники — ножик для зачистки, сигарета в роли паяльника… В общем, спустя пять минут наушники снова выдавали звук в полном объёме.
Нецензурно восхитившись, парень двинулся к товарищам. Спустя десять минут, когда я о нём и думать забыл, предо мной возникло приличное количество пива, и смутно знакомый голос сочувственно прогудел:
— Слышь, братуха… Ты, это, в порядке? Если чё — звони, мы поможем…
Пиво разошлось по рукам. Нестройный хор пропитых голосов матерно и от души желал мне всего и побольше. А над городом зажигались первые звёзды…