12418

Синдром фантомного уха

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

Проблема. Скурил ещё пачку мануалов, потом долго думал, но так ничего и не добился. Решил ещё раз попробовать с утра, на свежую голову, и улёгся спать.

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

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

После пары ребутов всё устаканилось. И экран не гаснет, пока не попросят. Всё-таки одна голова — хорошо, а две…

Сижу теперь бэкапы накатываю — вдруг чего опять приключится?

12417

Правильное — враг хорошего

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

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

А вы точно разобрались, что именно должна хранить эта БД и как с ней работает софт?

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

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

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

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

Всё зависит от того, какая задача стояла перед создателями базы.

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

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

В доказательство тётка тоже может предъявить сертификат о прохождении курсов: у тебя, глупый админ, такого нет! И попробуй оспорь…

12416

Рабочий стол навеки с нами

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

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

И не поспоришь. Смеялись все, от кассиров до уборщиц. Но один продавец нашёл под прилавком советскую книгу с рецептом фотографии на ткани. Пропитываешь ткань особым раствором, и она начинает действовать аналогично чёрно-белой фотобумаге. Еле успокоив клиента, он вручил ему эту книгу в подарок.

Покупатель не стал сдавать проектор и ушёл. А на следующее утро — звонок:

— Приеду — съем всех! У меня по вашей книге на ткани негатив получается, а нужен позитив!

Рассказали, как инвертировать изображение. Следующий звонок был уже восторженным:

— Получилось! Мы сделали декорацию! Спектакль уже идёт! На следующий всех вас приглашу!

В эти выходные идём на спектакль.

12415

OLED своими руками

Мама внезапно осознала, что не сможет больше жить без карманного фонарика с жёлтенькой лампочкой, как в детстве. А в продаже найти такой теперь непросто.

И вот она пришла домой с небольшой охапкой жёлтых листьев. В июле их мало, но уже есть. Подобрала такой, чтобы оттенок понравился, и поместила в светодиодный фонарик в качестве светофильтра.

Сочетание современных технологий с классическим природным материалом получилось гармоничное. КПД, правда, тоже как у лампочки, но мама довольна, как слон. Хорошо, когда так мало надо для счастья!

12414

Кино по мотивам Экселя

Сегодня столкнулся со случаем эпичнейшего идиотизма.

Менял на днях человеку ось с «вислы» на «семёрку». Проходят сутки, человек в панике звонит мне на мобильный телефон и кричит в трубку, что ничего не работает. Приглашаю его к себе, запускаю ноутбук — и вижу, что все *.exe проассоциированы с Windows Media Center. Сделал откат и в очередной раз убедился в том, что самый ужасный вирус — это пользователь.

12413

Умей и будь

— Алё, какое расстояние между Москвой и Екатеринбургом? И сколько времени займёт на машине доехать?

— Тебя в Гугле забанили? Или школьные формулы на скорость-время-расстояние забыл?

— Да всё я умею, только некогда: договор с екатеринбуржцами составлять надо.

Уже была тут басня «не айтишник — будь добр, не разбирайся в айти». Теперь её новый варинат: «умею, но не буду». Доченька админская, вы ж в силу профессии калькулятором владеете отлично. Вот и посчитайте, сколько минут займёт вызвать и дождаться айтишника, и сколько секунд — самостоятельно включить принтер в розетку. И сколько в первом и втором случаях высвободится времени на «остальное».

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

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

12412

Сто первая ненормальная

На IT happens было: «Преподавательница реляционных баз данных, при мне объяснявшая студенту, что таблица, распечатанная им непосредственно из Access, ну никоим образом не находится в первой нормальной форме».

Не буду спорить, насколько плоха преподавательница. Но разве таблица из СУБД может быть не в 1NF? Оказывается, может. И я это видел в живом проекте.

Большая американская сеть магазинов одежды. В магазинах есть отделы (три наименования). Любитель нормализации сделал бы список отделов и таблицу-связку. Пофигист обошёлся бы тремя полями: has_kids, has_plus, has_shoes. Эти сделали набор отделов строчкой: «Kids, Plus, Shoes».

12411

--with-love

«Пересобрать ядро по книжке может любой дурак».

Сыграть по нотам, казалось бы, может тоже любой дурак. Тупо следуй нотному тексту, и само получится. MIDI-проигрыватель тоже это может. Да что там проигрыватель — механическое пианино справится!

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

Вот и ядро, с любовью собранное, совсем не так ядрячит, как собранное без любви.

12410

Сделай дело и пей пиво смело

Привет, друзья-айтишники!

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

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

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

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

12408

Ломай меня полностью

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

Тыкаю флешку (да-да, без всяких тестирований и прочего — не верю я байкам о сгоревших компах), но монитор не тухнет, дыма из БП не идёт, а кулер спокойно гудит, как ни в чём не бывало. Флешка определилась, все разделы на месте — значит, жива.

Пока не монтирую, вместо этого поднимаю виртуальную машину. Проверим, сохранилась ли информация… Подключаем флешку, смотрим: все папочки на месте, всё в порядке. Но в мозг закрадывается профессиональное сомнение, всё ли в порядке, ещё до того, как я осознаю, что все папки выглядят как-то странно. На виртуальной машине (голая и навечно «только что установленная» XP) не было совсем ничего настроено, однако иконку папки проводник отображал очень даже Вистовскую. Ах вот как! «Панель управления» → «Свойства папки» → галочки «Отображать скрытые файлы и папки» и «Отображать расширения» — готово! Хитроумный вирус скрыл все папки, скопировал себя на флешку и назвал каждую копию так же, как папки, лежавшие в корне.

Отдав чистую флешку хозяину, я скопировал экземпляр вируса на рабочий стол XP и запустил. Вирус сработал безотказно, снеся всё, что было возможно, но через минуту XP снова чувствовала себя только что установленной. Хорошая всё же штука эти виртуальные машины!