bash.im ithappens.me zadolba.li
5218

Ханойский биг-тауэр

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

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

С помощью плоскогубцев, ножа, гнутой буквой «Г» отвёртки и едрёной бабушки снимаю звуковуху. Последний болт, держащий видеокарту, с нестандартной головой — крестовая отвёртка не лезет. Б#я! Умыкнув у коллеги-инженера отвёртку с маленькой головкой, извлекаю видеокарту. Радиатор с вентилятором прикручены болтами с пятиконечным углублением на головке. @#$%&! Какой доморощенный сатанист придумал болты с пентаграммами? Взял ещё одну отвертку. Разобрал, смазал, собрал обратно.

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

11093

Не жилец, но есть нюансы

Источниками быдлокода являются не только неопытные программеры, но и люди, прямого отношения к программированию давно не имеющие.

Отучился я на специальности «Программное обеспечение ВТ и АС», но потом подался в ремонтники железа. Полученные знания потихоньку утрачивались, а новые касались совершенно других проблем. В один прекрасный момент хорошие знакомые попросили в сжатые сроки написать диплом по специальности, на которой я учился. Тема: «Сетевая реляционная БД». Отмазаться не получилось. Так как на работу отводили неделю, об изучении чего-то нового речи быть не могло: на одну пояснительную записку и плакаты ушло бы три-четыре дня. Писать предлагалось на Delphi 6. Надо отметить, что во время моего обучения на предмете «Базы данных» мы проходили досовский FoxPro 2.6, соответственно, про SQL я только слышал, а о сетевых БД знал только то, что они есть.

Поставленная задача была выполнена. Результатом стал клиент-серверный программный комплекс. Программа-сервер открывала файл MDB через ADO и ждала запросов от клиентских приложений. Клиентские приложения общались с сервером через DirectPlay (компонент DirectX, предназначенный для простой реализации сетевых игр), используя самопальный язык запросов. Получив от клиента запрос, сервер мог искать в БД данные методами FindFirst/FindNext либо создавать новые записи из полученных данных. Все запросы попадали в некое подобие FIFO-буфера, в котором происходила «сборка» фрагментированных запросов, а также отбрасывание огрызков. Контроль доступа к базе осуществлялся методами всё того же DirectPlay. Защита от одновременного редактирования записи была реализована путём добавления специального поля в корневой таблице: если значение в нём равно единице, то запись уже кто-то редактирует.

Как ни странно, весь этот кошмар работал. Тест проводили четыре добровольца. За десять минут активной манипуляции данными сбоев не было, а для диплома больше и не надо. Диплом был сдан на отлично, так как в текст программы никто не заглядывал, а на экране всё выглядело вполне пристойно.

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

Если кому это чудо попадётся — пожалуйста, не обижайтесь. Я не думал, что этим кто-то будет реально пользоваться.

12742

Меньше мягкого

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

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

Продолжая тему файловых менеджеров: командная строка ещё удобнее. copy *.* или cp *.* в зависимости от религии. И не надо мышкой по монитору между папками шариться.

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

И да, я храню ежедневник за 2008 год. Работу я не менял, и полезной информации в нём — море. Задача наёмного сотрудника, как я её вижу — решать задачи, а не плодить новые. Если в ежедневнике огромное количество контактов, аккаунтов, задач и прочей информации, то почему бы и нет. Не в телефон же всё это вносить, если понадобится один контакт из сотни? Пусть лежит — еды не просит, полезен.

Эх, сколько в IT лишних действий — одна политика паролей чего стоит! А ежедневное копирование на внешний носитель или шифрование данных…

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

8981

Найдётся всё, а так я не могу

Сижу весь в себе, смотрю логи named и копаюсь в конфигах. Понимаю, что DDNS мне не так уж и нужен, отключаю, ковыряю, наблюдаю. И тут выдавшееся десятиминутное спокойствие нарушается очередным сообщением во внутреннем чате, гласящим: «Спустись». Спускаюсь и совершенно не удивляюсь проблеме нашего библиотекаря, которая показывает мне на листе адрес сайта и пытается на него попасть с совершенно левого открытого в браузере ресурса. В сто первый раз ей показываю ей на адресную строку и объясняю, что попасть на сайт, зная только его адрес, — вполне выполнимая задача.

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

1260

...а в военное время достигает четырёх

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

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

long double a1, a2;
a1 = PI / 2 + alp;
a2 = PI / 2 - alp;

После выполнения оказывается, что и a1, и a2 меньше, чем 1,57. Долго думали. Ещё думали. В итоге посмотрели в начало кода:
const int PI = 3.1415926535897932384626433832795;

Вот уж действительно: «Для простоты вычислений примем Пи равным трём»...

8079

Виста с нужным ароматом

В своё время с выходом Windows Vista у носителей латышского языка появилось много поводов для лулзов: vista по-латышски — это курица.

Принесли соседи ноутбук. Включается, но ничего не показывает. Стандартная проблема для HP DV 6000 с отпаявшимся чипом видео. Решили, что проще купить новый. На форумах же писали, что временно эту проблему можно решить в духовке за пять минут при 170 градусах. Ничего не теряя, разобрал компьютер и засунул плату в освободившуюся после обеденной курочки духовку.

Аромат свежеиспечённой курицы от загружающего Windows Vista ноутбука был бесценен.

1951

Пусти козла в огород

Многие считают, что программисты, админы и прочие представители IT-нечисти чересчур подвержены влиянию стереотипов о всякого рода Ктулху, блондинках и тому подобных сокровищах прогрессивной человеческой мысли. Возможно, возможно; однако в каждом суеверии есть доля здравого смысла.

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

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

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

10505

Вы все уволены

Понедельник, полчаса до конца рабочего дня. Только что словил нехилый выброс адреналина, а заодно и проснулся окончательно. А всё потому, что внимательнее надо быть.

Есть у MS SharePoint 2010 одна не очень приятная особенность, если на сервере не включена синхронизация пользователей. Чтобы прибить пользователя на «шарике», дабы ему больше нельзя было назначать задачи, недостаточно просто удалить пользователя в домене — нужно ещё выполнить пару запросов к базе данных «шарика». Метод подобран чисто эмпирическим путём, так что, скорее всего, не очень правильный, но зато работает. После удаления пользователя таким образом его задачи никуда не деваются, просто в списке задач в столбце «Кому назначено» будет пустое место.

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

Перепроверяю список задач и понимаю, что я дурак, и всё на самом деле в порядке. Между «Названием» и «Состоянием» никогда не было и не должно было быть ещё одного столбца, просто некоторые строки в «Названии» оказались настолько длинными, что раздвинули столбец на такую ширину, что там хватило бы места ещё на один. Колонки «Кому назначено» попросту не было в отображении этого списка по умолчанию.

Зато проснулся.

3859

В ста одёжках на криптозастёжках. Часть вторая

Настроив многоступенчатую удалёнку, я обнаружил, что офисный VPN-клиент под виртуалкой блокирует все мои домашние соединения и соединение с интернетом — можно ходить только на разрешённые офисные IP. То есть в скайп и аську не выйдешь, справочник в интернете не посмотришь, на FTP не зайдёшь. Добавление всевозможных сетевых соединений на виртуальную машину результата не дало — всё блокируется наглухо.

Выяснилось, что VPN-клиент не блокирует расшаренные для виртуальной машины папки, подключённые как диски. Решение: создаём расшаренную папку на виртуалке. Туда будут по специальному шаблону кидаются файлы «соединений», наличие и изменение размера которых свидетельствует о приходе новых данных. Хост-машина будет следить за файлами и пришедшие данные отправлять старшему HTTP-прокси. Виртуалка станет следить за файлами и пришедшие данные отдавать браузеру, у которого мы пропишем адрес прокси 127.0.0.1.

Пишу утилиту «ФайлоПрокся v1.0».

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

Пишу утилиту «ПроксиМост v1.0».

Финальный тест: сидим дома. В виртуалке заходим по удалёнке на офисный комп, запускаем ПроксиМост-Клиент, выходим на виртуалку, запускаем ПроксиМост-Сервер (пошёл коннект на офисный комп, мост «виртуалка-офис» налажен), запускаем ФайлоПрокси-Клиент, выходим на хост-машину, запускаем ФайлоПрокси-Сервер (появляется HTTP-интернет на виртуальной машине, мост «хост-виртуалка» налажен).

И вот когда заработало это, я понял ответ на последний вопрос из предыдущей истории: нет, это не лечится, и я действительно законченный извращенец! Сомневаетесь? Держитесь: всё это написано на VB6!