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

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

4852

А шоб було

Живу и учусь в Комсомольске-на-Амуре. Cлавные учителя решили где-то год назад провести модернизацию. «Нужен сервер!» — сказали они. И понеслось...

Купили сервер, поставили. А зачем? Информатички (дружно, хором): «Сайт поддерживать!» Ему и без вас хорошо на Яндексе. Локальная сеть? Какая такая локальная сеть? В итоге сервер просто подключили к инету, чтобы хоть что-нибудь он делал. Сервер часто от кривых рук информатичек летит, и приходит добрый дядя-админ, на которого мигом рушится ещё вагон с маленькой тележкой юзерских проблем. Вот так, товарищи, и живём.

4813

Тяжело в учении, тяжело в бою

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

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

* * *

Переменные могут состоять либо из одной буквы, либо из одной буквы и цифры. «ts» или «t00» — ошибка синтаксиса.

* * *

Есть вот такие строки кода:

t1 = ET1/10 − t0;

output(#0, t1);

Выполняются они по факту в такой последовательности:

t1 = ET1/10;

output(#0, t1);

t1 = t1 − t0;

output(#0, t1);

* * *

ET1/10 ≠ ET1*0,1. После обнаружения этого бага я вышел из аудитории и побился об стены. Программа вела себя по-разному: то замедляла время в десять раз, то считала время как дробную величину, а не целую.

* * *

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

* * *

И на десерт: программа в бесплатном режиме работает два часа (и, следуя логике, после этого выключается). Но нет, разработчики не смогли подать команду выхода, поэтому программа сама просит, чтобы её перезапустили.

4796

Сортировка шатдауном

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

Момент сдачи. Первый метод отрабатывает без проблем, приходит время запускать второй. Я начинаю мямлить, что, дескать, не полностью разобрался, и метод не совсем работает. Преподаватель отрезает: «Запускайте!»

Нажимаю Ctrl+F9. Во всём здании института гаснет свет, компьютер издаёт затухающий звук останавливающегося винчестера, а преподаватель ставит «отлично» со словами: «Ну вы и написали программу!»

4785

Подружка на ночь

Моё первое знакомство с линуксом состоялось, когда я после защиты диплома работала на кафедре родного вуза, подвизаясь в сфере проектирования транзисторов. Кафедра как раз раздобыла новую программу для моделирования полупроводниковых приборов: ISE TCAD. Можно было поставить версию либо для *nix, либо для Windows — выбрали первый вариант. Было закуплено четыре довольно мощных на тот момент компьютера с новыми видеокартами Radeon (при наличии встроенного видео на мамках) и коробочный дистрибутив ASPLinux 9.0 аж на девяти дисках. Это уже было фейлом, но об этом ещё никто не знал.

Меня поставили перед всем этим добром, ещё даже не распакованным, и попросили организовать уютный рабочий уголок, начиная от сети и заканчивая непосредственно «Тикадом». На тот момент *nix-системы были для меня ещё абсолютным «чёрным ящиком», но где наша не пропадала? Бодро собираю для начала один компьютер, гружу предустановленные продавцом «форточки» (а что, деньги-то казённые), вставляю первый диск дистрибутива в привод, запускаю установку... Зависает. И так зависает, и сяк зависает, и всяко зависает. Хорошее начало.

Гружусь с CD. Перезагрузка, чёрный экран, приглашение. Э-э-э... Я, конечно, раньше дел с линуксом не имела, но наблюдала системы с ним неоднократно, и знала, что какая-никакая графическая оболочка там быть должна. Пришлось лезть во всезнающие интернеты и изучать маны. Через полчасика я уже обладала кое-какими начальными знаниями о «баше» и «иксах», которые тут же попыталась применить на практике. Попытки включить графику оказались бесплодны: система ругалась, плевалась, но сделать красиво не давала. Пришлось изучать вопрос более детально, после чего открылась горькая правда о совместимости этих самых «радеонов» с тем самым Red Hat, на котором и была основана отечественная разработка ASPLinux. Однако совместимые дрова для «радеонов» существовали — их я быстренько скачала и принялась ставить.

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

Но это был не конец, а только второе начало. В общем, в дальнейшем мне пришлось пересобирать и компилировать ядро под свою систему, вырубив на фиг все видеодрова и поддержку DRI, устанавливать новые дрова, бороться с ошибкой отсутствия ncurses, шаманить с XF86Config и пережить ещё множество занимательных приключений юного линуксоида. За это время я обрела глубочайшие познания в части архитектуры ядра Red Hat. Но в конце концов установленная система гордо сверкала окном ISE TCAD с 3D-моделью транзистора. Это было оно, счастье.

Я весьма рада, что моё знакомство с линуксом началось именно так: если бы всё установилось без проблем и сразу заработало, я никогда бы, наверное, не углубилась в *nix-недра и не познала того момента наивысшего блаженства, знакомого всем, у кого что-то вышло после долгого-долгого секса с железом или ПО.

А на следующий день начальство сказало переставить всё под Windows, потому что «в этом вашем линуксе ничего не понять».

4783

Верность идеалам поколения

Сегодня участвовал в олимпиаде по программированию. На входе встретили, проводили.

— Какой язык?

— С++.

— А у нас такого нет.

Предложили Бейсик и Паскаль — но они же инвалиды, в современном-то понимании...

Три часа я писал код в Блокноте. Застрелиться: компиляция в уме, старательно вспоминаем параметры функций, море фигурных скобок... Оп-ля: кусок кода, который должен работать. Подходили поинтересоваться многие:

— Так это ж С! А компилятора нету!

Ой, правда? А я в Блокноте собрался компилировать, ага. С трепетом жду результатов...

4782

Не смотрите под капот

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

Прошло несколько лет. На пятом курсе на выходные я вернулся домой. Разговор с родителями зашёл о программировании, и мама сообщила мне сногсшибательную новость: мою кривую и косую программу, оказывается, используют кадровики почти всех школ города (мама работает в РОО), и её даже показывают на каких-то внутренних курсах для айтишников. Почему её полюбили кадровики? Она не требовала установки, следовательно, легко переносилась с компа на комп даже самыми тугими пользователями; имела простой и понятный интерфейс, разрабатывавшийся непосредственно при участии мамы-кадровика; считала всё быстро и правильно (не знаю, как я умудрился в том возрасте нигде не накосячить).

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

4697

Макет макета — проблем нету

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

Выход был найден. Последнюю в коде кнопку я тайно впаял в цепь из батарейки и лампочки-индикатора. Profit!

4687

Оптимальный расклад

Занимаюсь SEO — сайты продвигаю, свои и клиентские. Параллельно учусь в институте. Надо было мне один раз уйти с одной важной пары по личным делам. Дотошный препод просто так не отпустил, а решил попытать:

— А где работаешь-то?

Объяснять экономисту со стажем, что такое SEO, я не решился.

— Я компьютерщик.

— О, как раз то, что нам нужно! Пойдём на кафедру, у нас один из компьютеров барахлит.

Лезть в чужие ПК неохота. Зачем им админы штатные нужны?

— Эм, я не совсем компьютерщик, я скорее программист.

— Да? Слушай, может, ты тогда поможешь моему сыну с информатикой в школе? Что-то он совсем не понимает, только в игры на компьютере дуется.

Дядя, не нервируй меня!

— Это тоже не совсем по моей части. Я сайты пишу, а не программы.

— Так это тоже замечательно! Видел сайт нашего института? Совсем он старинный, его ещё в девяностых делали, надо бы обновить. Может, займёшься?

%$#! Может, я просто пойду по своим делам? Бесплатно делать что угодно мне совсем не хочется.

— Я опять выразился не совсем точно. Я сайты не делаю, а продвигаю их, чтобы приходили посетители.

Всё, думаю, выкрутился! Смотрю на препода глазами кота из «Шрека». Но не тут-то было:

— Великолепно! У меня есть блог личный, да что-то никто на него не заходит — как в пустоту пишу. Поможешь?

Эх, значит, судьба такая: без работы не уйти.

4608

Антииндийский код

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

История эта произошла со мной, когда я учился на первом курсе МИРЭА. Очередная лаба по программированию: матрица N×N с рандомными числами, задающими расстояние, в которой надо было провести расчет кратчайшего пути из {1; 1} в {N; N}. Первая версия программы была напичкана циклами и массой условий. Работала быстро — ну, насколько это позволял третий «пень». Тётечка-преподаватель, оценив код, сказала, что надо бы оптимизировать. Почесав репу, я изрядно переписал код: количество циклов сократилось вдвое, а условий — втрое. «Всё равно много», — сказала тетечка.

Десятая версия выглядела примерно так:

i := 0;

while ((48 условий) and (i <= N*N)) do inc(i);

Только после этого я получил зачёт и фразу, которая вьелась мне в мозг: «Памяти много не бывает!»

4607

Слышал звон и знает, где он

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

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

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

— C/C++, Pascal/Delphi, VBA немного, — особо не задумываясь, ответил я.

— Это слишком мало. Если бы вы посещали лекции, знали бы больше! Встретимся на следующей неделе.

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