bash.im ithappens.me zadolba.li
10020

А вы ребут сыграть могли бы на флейте гигабитных труб?

Думаю, многие из нас балуются музыкой. У меня это перешло уже давно во вторую работу. Или второе хобби. Или первое. Я не знаю.

Современные производители музыкального софта делятся на два лагеря: профессиональный и любительский. Так или иначе, есть стандарты VST/VSTi, с которыми работают абсолютно все софтины на всех системах — хоть в маках, хоть в винде, хоть в линуксе. И любимые звуки и надстройки вне зависимости от возраста примочки шагают со мной уже больше десяти лет от программы к программе, от компа к компу, не вызывая проблем с совместимостью операционной системы.

Второе (или первое?) хобби у меня — веб-программирование и администрирование веб-серверов. И вот тут у нас тоже как бы вроде бы где-то есть стандарты. Вот только вопрос: почему же мы не можем договориться по поводу принципиально простых вещей? Почему хостинг-провайдеры делают массу всевозможных панелей управления (а иногда и чужие без зазрения совести воруют), но никогда не могут написать толкового управления настройками виртуальных хостов? Почему простейшая вещь под названием «DNS-запись» у нас превращается в обалдеть какую платную услугу, хотя это ж обычный файл зоны меняется? Почему нельзя включить на обычном хостинге SSH в обязательные бесплатные услуги? Что, криво растут руки, чтобы настроить? Может, прогнать криворуких специалистов? Вы когда-нибудь выливали бэкап на 8 гигабайтов на хостинг без SSH, используя FTP? Распакованный, потому что криворукая панель управления хостингом не умеет запускать простейших системных команд?

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

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

10019

Роутер мироточащий

16 октября 2012, 07:15

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

Первая мысль — полтергейст. Вода просто появилась ниоткуда. Даже подумал батюшку пригласить для освящения мастерской.

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

10018

Скорее мёртв, чем жив

16 октября 2012, 07:15

Только что:

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

10017

Паук в косынке ищет минки

15 октября 2012, 07:45

Бывало разное, но этот день случился какой-то особенный.

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

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

* * *

Приезжаю на другой вызов обсудить вопросы с директором. Директор занят — захожу в бухгалтерию узнать, как чего. На столе у бухгалтера лежит колода карт. Беру колоду и пытаюсь показать какой-то фокус. Заходит директор и говорит: «Как играть закончишь, зайди ко мне, раз уж приехал».

* * *

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

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

Через некоторое время директор заходит узнать, как идёт работа. «Может, ты уже начнёшь компьютер чинить? А то у нас бухгалтер уже неделю в банк-клиент зайти не может». Хорошо, адекватному человеку не пришлось долго объяснять смысл многозадачности в компьютерах.

* * *

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

10016

Эпидемия вируса отупения

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

Малыши за очередную серию «Маззи» горы свернуть готовы, зубрят стишки, слова и правила, увидев на улице — радостно вопят мне: «Hello! Nice to meet you!», а став постарше, спрашивают: «%name%, а почему вы у нас больше уроки не ведёте?» То есть не самый нужный в ребячьей повседневности предмет в запасники памяти вкладываю — и неплохо вроде бы. Потом, надеюсь, не раз добрым словом вспомнят.

С компьютерами тоже знаком не понаслышке: первой записи в трудовой «техник ЭВМ» — уже почти два десятка лет, еще первый десяток календарных не разменял, а уже с «Правцами» и ЕСками возился. На выпускных в школе предметом по выбору взял, естественно, информатику. Кстати, жутко поразил преподавателя программой на встроенном в Эксель Бейсике, строившей на листе календарь на любой заданный год. Повезло, дорвался школьник до стоявшего ради мебели у директора в приёмной 386SX-20 c Windows 3.11 и Вордом-Экселем на борту, вот и выпендривался.

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

Так вот, я стою, можно сказать, у истоков всех этих тётенек и дяденек, ищущих файлы в кабелях и почту в мониторах, — и что же вижу? Доступ к компьютеру за пределами школы есть у всех учеников. Даже у самых неимущих есть друзья или родственники, допускающие «к телу». А действительно интересующихся можно пересчитать по пальцам. По одному на параллель, не больше. Они, кстати, и идут потом по IT-стезе, но речь не о них. Остальные знают про «вконтактик» и Мейл-агент, могут включить и выключить комп, запустить игрушку, набрать текст. Всё! Особо продвинутые знают про Гугл-хром (его ж по зомбоящику рекламируют!) или Оперу, методом перректальной гландэктомии могут составить коллажик в фотошопе. Трое-четверо освоили высший пилотаж: для лечения «локера» могут накатить винду с диска F#ck you Bill! vol. N, причём обязательно с предварительным форматированием и переразбиением диска на два десятка логических спираченным Акронисом, но без сохранения инфы. Зачем? Потому что так надо. Такими они впервые приходят на урок. С чуть большим количеством знаний уходят. Но применить их на практике, за пределами школы? Ага, щас. Это фантастика, сынок.

И вот всем им я рассказываю про алгоритмы и системы счисления, растровую и векторную графику, блок-схемы и архиваторы, вирусы и антивирусы, сети и файрволы, Scratch и Паскаль, королей и капусту… Под запись, с примерами, схемами и дополнительными объяснениями, если кому-то плохо понятно. Кому-то дополнительное задание, чтоб не скучал, а материал закреплял. Кому-то помогаю на ногтях рисовать степени двойки, чтоб легче было решать задачки на перевод чисел. Кому-то про переменные объясняю, записывая и стирая цифры маркером на кусочках плёнки для слайдов. Накопилось таких мелких хитростей много — что-то своё, что-то у коллег подсмотрено. Год за годом, а результат стабилен: один человек в год, который действительно пользуется мозгами, а не заученными магическими формулами. А остальные так и бегают с «заколдованными» флешками, на которых фотоаппарат всё видит, а комп — ничего. Так и приносят их родители ноутбуки со всякой мелкой фигнёй типа выключенного вайфая. Так и говорят друг другу: «Да наш %name% — хакер, точно тебе говорю, просто не признаётся».

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

Теряюсь в мыслях — что ж это было-то? На флешмоб не похоже. Хоть кто-нибудь не выдержал бы и рассмеялся — а тут реально ступор полнейший у всего класса на полчаса с хвостиком. Эпидемия вируса отупения? Дух Фурсенко? Что ж это было-то, Бэрримор?

10015

Коня, саблю и SSD на терабайт

15 октября 2012, 07:15

Обедаю на кухне с программистами. Один из них в гневе:

— Да что такое! То чая нет, то кофе закончился. Теперь вот салфеток нет! Надо сказать, чтобы кто-нибудь нам их принёс.

Открывается дверь, входит генеральный директор компании и кладёт на стол упаковку салфеток. Немая сцена. Вскакивает второй программист:

— А мне денег, денег!

10014

Суп из спагетти

15 октября 2012, 07:15

Мне по работе доводится программировать на множестве языков, и некоторые вещи меня, так сказать, удивляют.

Гляжу в код PHP с постоянными переключениями PHP-HTML вроде:

<IMG src="<?php echo $data['source'];?>" height=150 <?php if ($data['width100']) echo "width=100%"; ?> >

Читается плохо. И вдруг меня осеняет: это же как слушать речь, пересыпанную матюками! «Картинка, б****, из е**** файла, высота 150 ****, и растянуть, на ***, на всю е***** страницу, ***!»

Тоже самое с SQL. Вездусущие конкатенации и экранирование кавычек, да и ещё без пробелов:

UPDATE '.$data['table'].' SET '.$data['field'].'=\''.$data['value'].'\' WHERE $where

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

В своих проектах я давно от этого избавился, сделав подсистему функций и классов наподобие sql_update($table, $data, $where). Потратил полдня, сэкономил недели. Но глядя в чужой код, не перестаю удивляться: охота вам, кодерам, ходить по граблям, поедая кактусы? Ведь случайная кавычка или точка выливается в часы отладки, чтобы найти в вашем супе из спагетти муху. Или не хватает ума мыслить выше плоского стандартного кода? Вот этим и отличаются программисты от кодеров.

10013

Скан без перерывов на обед

15 октября 2012, 07:15

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

И тут начинается самое развесёлое. Юзвери PDF знают, но думают, что этот самый формат берётся только при сканировании из их МФУ, а спросить не догадываются. И что они делают? Распечатывают повторно две тонны макулатуры и сканируют в формат, что запросили сверху. Всего за неделю без выходных управились.

10012

Глобализация на марше

Никого не трогаю, примус починяю. Сам во стольном граде Киеве, примус — на Remote Desktop в Бостоне. По ходу дела возникает проблема, которую неплохо бы подебагать вместе с коллегой — это её область. Пускаю её по Remote Assistance и через некоторое время осознаю, что, собственно, я в процессе лишний. Ну и фиг с ним — пусть себе дебагает. У меня на кухне холодильник барахлит, так что пусть она чинит проблему, а я буду чинить холодильник.

Через некоторое время слышу «ку-ку» по аське. Подхожу — коллега жалуется, что ей вышибло сессию. А этот Remote Assistance — это вам не VNC: обязательно, зараза, хочет, чтобы нажали кнопочку, что-де можно пустить человека, которому только что послали инвайт. Ладно, перепосылаю инвайт, пускаю. Через N-цать минут история повторяется, только на этот раз почему-то у меня ещё выбивает VPN-сессию. Хм… А чтой-то лаптоп на батарейке? А, так это ж я устроил КЗ в холодильнике, а БП у лаптопа спараноил и решил вовсе не включаться при таких скачках.

И тут до меня медленно доходит. Прошлый раз тоже было КЗ. Только тогда пакетник я включил сразу, а сейчас — ещё минут несколько думал, почему закорачивает-то. Выбило пробки — выключился роутер. Выключился роутер — упала сессия RDesktop из Киева в Бостон. Упала сессия RDesktop — упал сам десктоп. Упал десктоп — упала и сессия RAssistance.

То бишь КЗ в холодильнике в киевской квартире выбивает сессию Remote Assistance между двумя соседними офисами в Бостоне.

А КЗ было идиотское, в проводе питания. Так его, заразу, хитро пробило, что омметр со своими 1,5 В честно показывал 700 Ом от компрессора (а если отсоединить — так и полный неконтакт), а вот 220 уже хватало, чтобы пробить изоляцию и устроить КЗ.