Category: it

Category was added automatically. Read all entries about "it".

"Нас интересует ВСЁ" -- аксиома деятельности разведки

На картинке показан фрагмент базы данных командования "Юг" ВС Украины. Понятно, что кто-то эти секретные данные стырил. И понятно, даже кто. Зачем? А затем. См. заголовок -- там помещена мантра времён ВМВ. Вдруг когда-нибудь пригодится. Как в 1944 году вдруг пригодился сделанный в 1943 аэрофотоснимок невзрачного фермерского поля где-то в Баварии. При повторной съёмке на этом поле аналитики разведки британских ВВС обнаружили ведущую в лесной массив тропинку, которой там раньше не было. И после дополнительного наблюдения выяснилось, что в лесу немцами был недавно спрятан важный военный объект. Который британцы вскоре разбомбили.

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

Чем отличался ЦККП от ЦК КПСС. -- A war story про программистов и сисадминов

Сразу отвечу на 50% на вопрос в сабж. ЦККП -- Центр Контроля Космического Пространства. Это подразделение во главе с целым генералом авиации было создано в СССР во второй половине 1960-х в рамках Войск ПВО страны. В то время на бытовом уровне те, кто имел к нему отношение, иногда спекулировали на созвучии с названием куда более солидной организации, называемой ЦК КПСС, которое у большинства советской номенклатуры вызывала благоговейный трепет.



Посмотрите на нагрудный знак, который я продолжаю носить с гордостью, и проникнетесь. Впрочем, когда был создан ЦККП, я ещё был курсантом военной академии и об этой организации в нашей среде циркулировали слухи, один загадочнее другого. Нам, курсантам, ничего не объясняли, но кусочки информации просачивались каждый год в конце июня, когда происходил очередной выпуск из нашей военной академии. Несколько лучших выпускников получали назначение на службу в ЦК КПСС ЦККП. Поскольку на чужой роток не накинешь платок, слухи об этой организации, расположенной в ближней зелёной зоне к Северо-Востоку от Москвы, циркулировали в наше среде. Я лично мечтал служить в зелёной зоне, потому что родился и вырос в тех местах. Никакого сравнения с двумя моими однокурсниками, которые по выпуску получили назначения служить в тайге на китайской границе возле Благовещенска и Хабаровска. Впрочем, к 20-летию выпуска оба они дослужились до звания генерала среди нас, 50 однокурсников...

В сегодняшней России ЦККП -- это 821-й главный центр разведки космической обстановки (ГЦ РКО)
https://ru.wikipedia.org/wiki/Главный_центр_разведки_космической_обстановки

А теперь подойдём ближе к моему war story. Те, кто из вас что-то понимает в информационных системах, знает, что сегодня обстановку в околоземном космическом пространстве соответствующие системы контролируют в реальном времени, отслеживая траектории тысяч искусственных спутников Земли и десятки тысяч фрагментов космического мусора. Положение было совсем не таким в период моей туманной юности на рубеже 1960-70.

В то время вокруг Земли обращались единицы космических аппаратов (живых и мёртвых), и для каждого из них сотрудники ЦККП рассчитывали траектории почти ежедневно. Всё это делалось вне реального времени и почти для каждого космического объекта разрабатывали отдельную программу прогнозирования его траектории.

К середине 1960-х в СССР были созданы неплохие отечественные ЭВМ, но советская промышленность конкурировать с Америкой не могла из-за нехватки ресурсов и меньшего размера рынка. Поэтому в 1967 году на уровне ЦК КПСС (не имевшем отношения к космосу, но управлявшего всем государством) было решено тупо копировать архитектуру и программное обеспечение компьютеров американской фирмы ИБМ (System/360/370). Эта капитуляционная промышленная программа получила название Единая Система ЭВМ. Первые компьютеры этой серии появились в 1971.

Здесь я об этом пишу для тех, кто захочет возразить мне, придравшись к техническим деталям изложенного ниже. Сразу замечу, что то, о чём я рассказываю, к ЕС ЭВМ отношения не имеет и происходило, когда в ЦККП использовали ещё старые добрые отечественные ЭВМ М-222.

В этих ЭВМ использовалась трёхадресная система команд (ИМХО очень удобная для программиста). Программы разрабатывали на машинном языке, ассемблере или языке высокого уровня Алгол. Независимо от языка программирования, команды и входные данные набивали на перфокартах. (В особо сложных случаях программы и данные можно было вводить с магнитной ленты -- но это был высший пилотаж).



Особенностью системы было возможность вводить данные с перфокарты в заранее определённую область памяти ЭВМ. Объём которой мог достигать впечатляющей величины 8 кубов по 4096 45-разрядных машинных "слов". Что на сегодняшнем языке означало 8*4096*45/8 = 180 Кбайт. В то время это воспринималось как бесконечность.

Программист обычно набивал колоду перфокарт с программным кодом так, чтобы весь исходный код программы последовательно, карта за картой, мог попасть в область памяти, определённый по умолчанию операционной системой. (В то время термин "операционная система" в русском языке отсутствовал, но такая рудиментарная служебная программа в ЭВМ М-222 имелась. Она называлась Диспетчер).



Также программист в первой строке любой перфокарты мог набить "код адреса", заставляя Диспетчер переслать содержимое перфокарты в конкретную указанную область памяти ЭВМ. Этот приём использовался очень редко. На моей памяти я несколько раз его применял, но не помню с какой целью. Что было как-то связано с вызовом стандартных программ. В общем, этот приём в обычной работе программиста ЦККП навряд ли был необходим.

Колоды своих перфокарт (порой многие сотни и даже тысячи карт) программисты оставляли в приёмной машинного зала, откуда их забирали "машинисты" -- сотрудники вычислительного центра и вводили в ЭВМ в соответствии с заранее утверждённым графиком и заказанным машинным временем. Машинное время было ограниченным ресурсом. Поэтому в дневное время программисты заказывали короткие промежутки времени (5-10 минут), чтобы получить сообщения об ошибках в кодировании и/или результаты тестовых прогонов на бумажной распечатке и в течение рабочего дня иметь 2-3 отладочных запуска своей программы. После того как программа была отлажена, программист для исполнения своей программы заказывал ночное время в течение нескольких часов для получения результатов расчёта траектории космического аппарата, за которым ему было поручено следить. Порой расчёты требовали десятки часов. Выполнение таких заданий назначали на субботу и воскресение.

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

Тем временем в ЦККП конфликт между машинистами и программистами стал напряжённым. И тут один программист решил проучить наглых машинистов. Он взял свою хорошо отлаженную программу, написанную в машинных кодах, и на каждой перфокарте набил код адреса. Это означало, что независимо от порядка перфокарт в колоде, фрагмент кода на перфокарте при вводе в ЭВМ попадёт в правильную область памяти. Этот программист заказал машинное время более 30 часов на субботу-воскресение. В конце рабочего дня в пятницу он принёс свою колоду перфокарт в машинный зал и убедился, что кто-то из враждебно настроенных машинистов видит, что он делает. А сделал этот программист следующее. Он как бы нечаянно уронил колоду перфокарт на пол и она рассыпалась. Затем он собрал с пола перфокарты, сложил из них колоду нарочито как попало и отдал её машинистам. Машинисты начали было возражать, но программист сказал им, что всё окей. Спустя некоторое время дошла очередь до выполнения этой программы, для которой было заказано длительное время. Машинисты такие задачи любят, потому что в течение заказанного времени они могут заниматься чем угодно. Продавленный диван в машинном зале -- свидетель того, как несла дежурство одна смешанная смена операторов ЭВМ -- мужчины и женщины более чем средней комплекции. Впрочем, это другая история. В данном случае машинисты были уверены, что после перемешивания перфокарт в колоде программа работать не будет. Но машина регулярно мигала индикаторами и не демонстрировала признаков программного отказа. В конце концов машинисты решили, что программа зациклилась, но по очень-очень длинному циклу. Чего не случалось ранее никогда -- зацикливание проявляло себя сразу. В общем, машинисты собирались написать жалобу своему начальству в связи с бесцельным расходованием ценного ресурса. При этом ресурс дивана на этот раз они сберегли -- из-за душевного расстройства. К удивлению машинистов, программа благополучно закончила свои вычисления и к вечеру в воскресение выдала разумную распечатку результатов. То есть программа работала нормально.

Таким образом, умные программисты ЦККП посрамили глупых, но заносчивых сисадминов - машинистов.

Неполиткоректность в преподавании программирования

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

Иногда такое множественное наследование полезно для конструирования программ, но часто оно вызывает путаницу. Поэтому в различных технологиях программирования множественное наследование разрешено или наоборот, запрещено.

Чтобы показать студентам, к какому абсурду порой может привести множественное наследование, я им показывал картинку, на которой изображены символы Демократической и Республиканской партий США. Особенно убедительно это работало в осеннем семестре в разгар предвыборных избирательных кампаний.

Какая гадость это ваша заливная Мордокнига!

Совершенно неинтуитивный интерфейс пользователя. Вообще непонятно назначение этого сервиса. В частности, неочевидно, как скопировать URL конкретного поста. (Спасибо Гуглу, нашёл, как.)
Невозможно вставить (т.е. залить - от слова "заливная") компьютерный код/database/spreadsheet (или мне совершенно непонятно, как это сделать). Режет глаз дурацкий вопрос What is on your mind? Или status -- это вообще WTF?

И на этом говне Цукерберг сделал миллиарды? Мир сошёл с ума...

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




Нарезая круги вокруг логова Большого Брата. Часть 1

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



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

[Spoiler (click to open)]

ББ в настоящее время выступает в нескольких ипостасях. Вот некоторые примеры.

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

2. Мобильные устройства (смартфоны, планшетники и др.) в дополнение к пункту 1 могут без вашего ведома сообщать ББ своё местонахождение, причём порой с точностью до одного метра. Аналогичные данные геолокации также накапливают операторы мобильной связи. Было бы очень странно, если бы всё это они не сливали Большому Брату. У некоторых моделей смартфонов отсутствует возможность вынуть батарею питания. Без специального прибора невозможно определить, передаёт ли этот аппарат что-то в логово ББ без вашего ведома даже в (как бы) отключённом состоянии.

3. Банки тоже следят за своими клиентами. О каждом из них многое могут рассказать транзакции на клиентских счетах, накопленные в течение нескольких лет. Мне известна крупная консалтинговая компания, которая на основе этой статистики по заказам банков строила математические модели поведения клиентов. Использование таких моделей позволяет банку максимизировать прибыль, так как имеется возможность прогнозировать вероятную реакцию каждого клиента в случае, когда банк накладывает на него грабительские штрафы. Выявить "толстокожих" клиентов, которые на штрафы сильно не обижаются -- одна из целей банка. С такого клиента много состричь много шерсти, а он и не заметит. Большому Брату эта информация тоже полезна, особенно если её объединить с тем, что можно извлечь из данных, накопленных о клиенте операторами мобильной связи. Кстати, за пределами Империи Добра тоже можно наблюдать такой симбиоз. Например, Сбербанк России позволяет своим клиентам получать онлайновый доступ к своим счетам только при условии, если клиент имеет аккаунт у одного из трёх ведущих российских провайдеров мобильной связи. Таким образом, чтобы наладить полноценный шпионаж за клиентами Сбербанка, осталось сделать очень маленький шаг. Трудно поверить в то, что этот шаг уже не был сделан российским ББ.

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

5. К пункту 1 следует добавить запросы, которые шлют пользователи вычислительных устройств онлайновым поисковым системам. Даже по одним только этим запросам, накопленным в течение продолжительного времени, можно многое узнать о личности пользователя. Чем успешно пользуется, например, Гугл, за деньги помогая рекламодателям втюхивать свой товар. У меня нет сомнения в том, что и ББ с помощью Гугла тоже многое узнаёт о гражданах.

6. Что сообщают о себе пользователи социальных сетей в явной или неявной форме, даже не нуждается в комментариях. Для Большого Брата эта новая реальность стала золотым дном, откуда можно черпать информацию о гражданах и группах, с которыми они так или иначе связаны.

Акулы ИТ-индустрии по-разному освещают своё сотрудничество с Большом Братом. Например, Майкрософт этого не отрицает, Эппл утверждает, что они вне игры, а Гугл просто скромно помалкивает. Но я подозреваю, что все эти акулы тесно сотрудничают с ББ.

Наиболее мощным потенциалом по сбору и накоплению персональных данных обладает Гугл. Поскольку эта компания владеет собственной операционной системой Android и собственной технологией геолокации, выкатила на рынок ряд мобильных компьютерных устройств, и ещё навязывает пользователям свою почтовую систему Gmail, без которой сервисы Гугла не могут работать, эта компания сама стала превращаются в ББ. Или быть может, в его младшего брата, с которым связана толстыми информацонными шинами.

Вот о деятельности Гугла и некоторых моих находках пойдёт дальше мой рассказ.

Перечисленные выше шесть пунктов показывают лишь потенциальные возможности по накоплению данных о гражданах. Однако для того, чтобы ББ смог из этих данных извлекать нужную для него информацию, в первую очередь необходимо создать для него возможность не захлебнуться в этом океане данных, объём которого растёт как на дрожжах. По этой части инженеры Гугла находятся впереди планеты всей, потому что они разработали технологию манипулирования огромными массивами данных. Учёные тоже стараются найти лучшие способы работы с такими большими массивами. В последние годы в ведущих университетах появились исследовательские группы, работающие по теме Big Data. Их легко найти тем же Гуглом.

Собранные "непосильным трудом" (а по сути -- полученные почти даром) данные Гугл хранит в шести дата-центрах, расположенных на территории США, одном в Чили, двух в Азии и четырёх в Европе. Ещё два центра в США находятся в процессе строительства https://www.google.com/about/datacenters/inside/locations/index.html. Я живу неподалеку от одного из действующих центров, Google Facility in Mayes County, Oklahoma. От моего дома всего 36 км. Недавно я посетил окрестности этого объекта, прокатившись на велосипеде туда и обратно. И вокруг него тоже. Дело было 03 апреля 2016 года. Поскольку строительство объектов продолжается, внешний вид прилегающей территории может скоро измениться.

Итак, сначала про существующий дата-центр Гугла.

Я дважды (в 2007 и 2010) присутствовал на встречах представителя этой организации со студентами и преподавателями моего университета. Как ни странно, оба раза перед нами выступал менеджер, ведающий зданиями, сооружениями и энергетикой. То есть по поводу информационных технологий, в который специализировались мои студенты, он рассказать почти ничего не мог, кроме того, что их системы работают под Линуксом и всё программное обеспечение Гугл разрабатывает для себя сам -- даже офисные продукты. Разумеется, и всё "железо" у Гугла тоже своё, уникальное. (Возможная причина -- защита программ и оборудования от шпионских закладок.) По существу самого центра наш гость тоже мало что рассказал. При этом сообщил, что даже объём энергопотребления дата-центра является конфиденциальной информацией. То есть Гугл -- организация секретная. Из этих встреч я запомнил, что для работы в этом центре Гугл нанимает только техников (т.е. выпускников двухлетних колледжей), которые знакомы с Линуксом. Остальным вещам новый персонал они обучают на рабочем месте. Специалистам с более высоким уровнем образования в дата-центре места нет.

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

Сначала вот вам кусок Гугл-карты:





Дата-центр расположен в оклахомском захолустье в сравнительно новом Mid-America Industrial Park. Однако главными факторами, которые Гугл принял во внимание при выборе этого места, были дешевизна рабочей силы и близость источника электроэнергии (до ближайшей крупной ГЭС тут всего несколько десятков километров). Похоже, что для перемалывания зиллионов байтов данных действительно нужно тратить много энергии.

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

На официальном сайте Гугла я нашёл вид этого центра с высоты птичьего полёта. Взгляд птицы направлен на Запад-Северо-Запад. Как раз туда, где я живу -- в 30 км с гаком аккурат прямо под Солнцем.





Вот сделанный мною снимок с северной стороны дата-центра. (Мой велосипед -- подтверждение аутентичности фото.) За высоким забором хорошо видны 16 цистерн -- жидких дисков, где Гугл хранит накопленные данные. Поскольку в отличие от жёстких дисков, технология жидких дисков ещё не стала повсеместной, для обеспечения надёжности Гугл для хранения 8-разрядов каждого байта использует 16 жидких дисков. То есть обеспечено 100%-ное резервирование каждого бита данных. И этот дата-центр копирует ВЕСЬ ИНТЕРНЕТ 24 раза в сутки!





По мере надобности по запросам потребителей данные из цистерн перекачивают по трубам, которые хорошо видны на следующем фото.






Собственно, вот и весь мой сказ про то, как сегодня работает Гугл - единокровный брат Большого Брата.

Остальное -- во второй части. И вообще -- пользуйтесь меткой Большой Брат.

Как я преподаю программирование 3/3

Домашние задания по программированию

Впервые будучи назначен преподавать курс программирования, я задумался, как формулировать домашние задания для студентов и как проверять их выполнение. У меня были две цели: (1) быть максимально чётким в формулировании того, что ожидается от студента и (2) минимизировать свои трудозатраты при проверке еженедельных домашних заданий. Одна из трудностей в достижении этих целей состоит в том, что компьютерную программу, задаваемую в качестве упражнения, можно реализовать разными способами.

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



getImage2



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

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

Типовая структура домашнего задания следующая:

1. Идентификация и форма отчётности (название задания, номер недели и что следует предъявить в качестве результата)
2. Название упражнения (например, Your First True Object-Oriented Program).
3. Учебная цель
4. Требования к программе
4.1. Назначение и функции
4.2. Входные данные
4.3. Выходные данные и/или эффекты
4.4. Описание алгоритма
4.5. Дополнительные требования к реализации
4.6. Тестовые примеры
5. Советы

Если разработка алгоритма является частью домашнего задания, то п.4.4 в задании может отсуствовать. В первой половине курса обычно домашнее задание содержит два упражнения примерно одинаковой сложности. Поэтому разделы 2-5 задания повторяются нужное число раз. Начиная с 8-й недели семестра, то есть после промежуточного экзамена, студентам в домашних заданиях предлагается третье упражнение за дополнительную оценку. Тем самым я даю возможность исправить положение тем, кто экзамен завалил.

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

Ниже показаны четыре страницы недельного домашнего задания из первого курса программирования. Это только одно упражнение; имеются ещё два упражнения аналогичной сложности.


CS2223_1
CS2223_2


От студента требуется сдать отчёт (MS Word document) в следующей типовой форме:

1. Идентификация (псевдоним, курс, раздел курса, дата, аннотация).
2. Название упражнения
3. Исполнение тестовых примеров (скриншот с обязательным выводом, правильно ли прошёл тест и с необходимыми пояснениями).
4. Исходный код программы.
5. Заключение о том, чему студент научился, что особенно понравилось и что было плохо.

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

Если домашнее задание содержит более одного упражнения, то разделы 2-4 повторяются нужное число раз. Разделы должны быть озаглавлены и должны быть пронумерованы; страницы тоже должны быть пронумерованы; чтобы строки кода не рвались, следует использовать ландшафтную ориентацию страниц. То есть отчёт должен выглядеть, как законченный технический документ. В целом он может содержать более 20 страниц. Поскольку этот документ электронный, а не бумажный, на количестве срубленных деревьев в лесу длина отчёта никак не сказывается. В первом курсе я не требую от студентов предъявить отдельно файлы с исходным кодом. О нём я получаю достаточное представление из отчёта. Исполнять студенческий код мне никогда не приходилось, так как в этом не возникало нужды: ошибки в коде мне видны сразу.

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

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

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

Моё очередное гениальное изобретение

Время от времени меня посещают идеи, которые вполне достойны патентования. Одна из них - устройство безопасного электрического утюга. Однако после просмотра базы данных американских патентов, я обнаружил, что такое устройство уже запатентовала фирма Samsung. Я опоздал всего лишь на шесть лет. Хотя корейцы меня опередили, мой результат был не плох для любителя на фоне профессионалов-разработчиков бытовой техники из Самсунга.

Как полагается со времён Архимеда, нынешняя гениальная идея меня посетила, когда я возлежал в ванне. "Почему бы не облегчить извлечение данных из HTML кода, заставив компьютер смотреть на него глазами пользователя вместо того, чтобы анализировать хитросплетения самого кода?" - подумал я, глядя на пластиковую бутылку с шампунем. В этом была суть моей идеи.

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

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

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

И вот сейчас с помощью этого самого Гугла я нашёл термин "screen scraping" и целую пачку ссылок на эту тему. Этот велосипед изобрели до меня. Пора опять принимать ванну.