Истории с тегом: образование

Всего историй: 725

3499

Когда деревья были выше, а байты тоньше

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

«Основной единицей информации является байт. Каждый байт должен принимать по меньшей мере 64 различных значения, но реальный объём содержащейся в байте информации может быть разным. Более того, в каждом байте может содержаться максимум 100 различных значений. Следовательно, в двоичном компьютере байт должен состоять из шести разрядов, а в десятичном — из двух».

Нет, это не бред сумасшедшего, как могли бы подумать те, кто родился позже Windows и никогда не учил программирование по классическим трудам. Это, чтоб вы знали, Дональд Кнут, «Искусство программирования». Там же, в примечании: «Приблизительно с 1975 года слово „байт“ стало обозначать последовательность из восьми двоичных цифр. <...> Говоря о байтах, <...> мы будем придерживаться прежнего значения этого слова, вновь возвращаясь к тем дням, когда понятие байта не было так стандартизовано».

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

3413

В каждой бочке затычка

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

— Молодец, вижу, что знаешь. Учи программирование, потом придёшь сюда работать.

Схема выглядела следующим образом: справа классическая пирамида (директор, управляющие, рабочие и всё остальное), а слева большой такой квадрат, связанный со всеми слоями, с гордой надписью: «Системный администратор».

3405

Видимость результата

Получал второе образование, на выходе собираясь стать инженером-программистом. Одним из проблемных на тот момент был предмет, изучающий потоки данных в приложениях под Windows. Темой одной из лабораторных работ нам поставили почему то создание инсталлятора средствами Visual Studio 6.0. InstallShield — прога прикольная, но больно мудрёная по настройкам. Была странность: внеся в определенный момент изменения в скрипт установщика, откатить что-либо назад не было никакой возможности — приходилось начинать всё заново.

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

Короче, подошёл я к своему одногруппничку, а у него всё готово. Проект взять не получается — там что-то с реестром связано было. Недолго думая, нажал я кнопку PrintScreen, сохранил .bmp с результатами по сетке на свой комп и уселся ждать преподавателя. Тот круги всё наворачивает, видит, что я вникаю, кнопки жму. Пошёл он с журналом на последний круг. Дошла очередь до меня. «Поглядите, — говорю, — всё готово: вот скрипты, а вот и результат». А сам изогнулся над монитором, заслонил немного и ткнул Alt+Tab. Предварительно раскрытый на весь экран и заботливо свёрнутый скриншот явился во всей красе. Преподаватель доволен, я тоже; одногруппники в шоке от моей наглости и смелости просто затихли.

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

3392

Установка как по маслу

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

Открываю диск с инсталлером и сразу же натыкаюсь на файл BASELINE.DAT. Да, он явно не помешает!

3386

Псевдодедуктор

Летняя сессия. Внезапно в полный рост встала необходимость сдавать курсовую работу. Вообще-то на неё отводилось два месяца, но всё это время ваш покорный слуга проводил, как истинный студент, а именно пинал балду. Пояснительная записка с никому не нужной теоретической ерундой у меня была (на неё я время когда-то выделил), а вот программы не было совсем. До сдачи пять дней. Тема работы, к слову, была достаточно серьёзная: анализ данных с помощью искусственных нейронных сетей. Предполагалось, что тему эту я изучу сам (своего рода исследовательская работа в рамках курсовой). На тот момент я имел представление только о том, как работа этой самой сети выглядит со стороны — ознакомился на примере пакета Deductor.

Ну что же. За три дня ускоренно изучается загрузка данных из таблиц Экселя с помощью ADO (исходные данные для анализа, пожалованные мне преподавателем, хранились в .xls), пишется оболочка с нехитрым, но солидным интерфейсом, примерно повторяющим виденное в Дедукторе, и прикручивается пара фич для большей напыщенности. В следующие два дня с сайта BaseGroup скачивается прекрасная open-source-библиотека с компонентами, реализующими нейросети в Delphi, быстро вкуривается, прикручивается к проге...

И тут встает вопрос: а каким образом оцифровываются данные перед обработкой? Тем более, что они у меня и числовые, и строковые, и «дата-время». Помедитировав, изобрёл метод: для каждого поля считались все уникальные значения, запоминались порядковые номера этих значений и подавались на вход нейросети. То есть обучающий пример выглядел как-то так: «Если в поле_1 значение №1/5 и в поле_2 значение №2/19, то в поле_3 значение № 3/7». Очень неплохая «оцифровка» вышла! Жутко довольный собой, запускаю это дело на тестовый прогон. Что и требовалось доказать: средняя ошибка расчетов более пяти тысяч, что совсем уж некошерно. Кроме того, на выходе сеть выдаёт значения вида 9,999999 и только на седьмом знаке после запятой начинает варьировать цифры. А я-то думал, она мне сейчас такие же порядковые номера выдаст, как я ей позагружал. Наивный... Понимая, что изучить верный метод оцифровки данных за последнюю ночь я не успею, в дело пускаю что? Конечно, Великий Рандом. Конечно, спрятанный табуляцией куда подальше за экран.

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

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

3345

Гроссбух.doc

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

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

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

3324

Сколько математиков нужно, чтобы ввернуть лампочку?

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

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

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

3314

Вырубившийся рубильник

Написал я как-то небольшой сервер для автоматической проверки домашних заданий по C++, выполняемых первым курсом родного университета. Описывать то, что и как он делал, долго и скучно — достаточно сказать, что у этого сервера был почтовый ящик, на который ему приходили команды. Обработанную почту он удалял сразу; сообщения неизвестной природы он тоже должен был убивать. С этого же ящика сервер рассылал результаты тестирования студентам и сообщения об ошибках мне.

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

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

Самую первую ошибку я сделал тогда, когда не предусмотрел специального сообщения, которое должно было останавливать сервер. Что ж, оставался единственный способ — сменить пароль на почтовом ящике. Где-то через час до меня дошло, где может быть ошибка, а ещё минут через пятнадцать я исправил злополучный глюк. Что ж, подумал я, на этот раз обошлось, и сервер можно включать обратно. Меняю пароль на старый — и, разумеется, совершаю вторую ошибку.

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

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

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

Программисты, тестируйте свои программы и протоколы тщательно, не забывайте о mock-объектах и всегда оставляйте себе возможность «повернуть рубильник», даже находясь на другом краю света.

3311

В музее фотошопов

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

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

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

Я видел дипломные проекты выпускников техникума — попадаются очень неплохо сделанные работы. Как им только это удаётся? Памятники таким студентам надо ставить.

3298

Доктор, доктор, линукс захворал!

С отрочества увлекался я самостоятельной сборкой десктопов и в те времена ещё экзотической системой Linux. Первые мои дистрибутивы прислала мне в подарок на днюху сестра школьного друга, уехавшая на ПМЖ в Швейцарию — это были Slackware и SUSE. Шёл 1997 год, все друзья, знакомые и соседи всегда обращались по любому поводу, хоть отдалённо связанному с IT, ко мне. Тогда это было нормально и не напрягало, к тому же я всегда получал положенное пиво.

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