воскресенье, 31 октября 2010 г.

Сканер / В. В. Мельниченко

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

Независимо от типа выбранного сканера, принцип его работы неизменен: специальный датчик просматривает изображение документа и преобразовывает его в цифровую форму. Полученный файл можно редактировать графическими программами, если это фотография, или специальным программным обеспечением для распознавания текста (OCR — Optical Character Recognition — Оптическое распознавание символов).

Наиболее распространены планшетные сканеры. Именно из-за своей универсальности: сканирование от слайда до толстого журнала. Существуют даже объемные (3D) сканеры. Достаточно удобная работа — как с ксероксом: положил оригинал, мышкой щелкнул, получил в копию.

Цветное сканирование — это не что иное, как сканирование в черно-белом режиме с различными фильтрами (красный, зеленый, синий) за каждый проход (устаревшие модели). Современные модели выполняют сканирование и сложение цветов за один проход. Самые последние модели имеют глубину цвета в 48 бит (для внутренней обработки изображения, так как в ПК изображение все равно передается с глубиной цвета не более 32 бит). Для домашнего или обычного офисного использования глубины цвета в 32–36 бит более чем достаточно.

Рис. 2.18. Обыкновенные планшетные сканеры

Также нужно обратить внимание на разрешающую способность. Очень часто в рекламе указываются цифры — 4800 dpi или даже 9600 dpi. При попытке уточнить вы услышите, что это максимальное разрешение, с которым способен работать сканер. На самом деле настоящее оптическое разрешение много ниже, а вам «подсовывают» данные интерполяции. Дурят нашего брата. Оптическое разрешение распространенных моделей не превышает 600 dpi. И только специализированные изделия (слайд-сканеры или модели для высококачественной допечатной обработки) могут иметь настоящие 2400 dpi или выше.


Полезные советы - Николай Мациевский

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

Прежде чем обращаться к элементу, нужно убедиться, что он существует.

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

HTML, полученный через DOM-методы, в большинстве случаев невалиден. Если мы хотим его повторно использовать, лучше всего привести его к валидному виду или применять innerHTML для всех таких случаев (задавая в качестве параметра часть валидного документа).

Следует избегать частого перебора элементов. Каждая операция (особенно getElementesByTagName) довольно ресурсоемка. Стоит кэшировать наиболее часто используемые элементы (подробнее о кэшировании в JavaScript рассказывается чуть далее в этой главе).

Не стоит проверять атрибуты, которых нет (если мы знаем верстку и знаем JavaScript-код, то в нем не должны появиться неизвестные атрибуты).

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


четверг, 28 октября 2010 г.

86. СПОСОБЫ ПУСКА ДВИГАТЕЛЕЙ - Ольга Александровна Косарева

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

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

Уменьшить напряжение, подводимое к двигателю, а вместе с этим уменьшить пусковой ток двигателя можно также при помощи автотрансформатора. При пуске автотрансформаторы понижают напряжение на 50–80 %.

Одним из главных недостатков синхронных двигателей является сложность их пуска в ход. Пуск синхронных двигателей может быть осуществлен при помощи вспомогательного пускового двигателя или путем асинхронного пуска.

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

Сложность пуска и необходимость вспомогательного двигателя являются существенными недостатками этого способа пуска синхронных двигателей. Поэтому в настоящее время он применяется редко.

Для осуществления асинхронного пуска синхронного двигателя в полюсных наконечниках полюсов ротора укладывается дополнительная короткозамкну-тая обмотка. Так как во время пуска в обмотке возбуждения двигателя наводится большая ЭДС, то по соображениям безопасности она замыкается рубильником на сопротивление.

При включении напряжения трехфазной сети в обмотку статора синхронного двигателя возникает вращающееся магнитное поле, которое, пересекая ко-роткозамкнутую обмотку, заложенную в полюсных наконечниках ротора, индуктирует в ней токи. Эти токи, взаимодействуя с вращающим полем статора, приведут ротор во вращение. При достижении ротором большего числа оборотов рубильник переключается так, чтобы обмотку ротора включить в сеть постоянного напряжения. Недостатком асинхронного пуска является большой пусковой ток (в 5–7 раз больше рабочего тока).


Макс Каневский, Информационный SMS-канал

ТЕРМИН, ИСПОЛЬЗУЕМЫЙ В ДАННОМ РАЗДЕЛЕ:

Информационный SMS-канал – служба распространения текстовых сообщений среди абонентов сетей сотовой связи в формате SMS.


Первый SMS-канал в преддверии выборов в Государственную думу в декабре 2003 года организовала сотовая сеть «Билайн» в Калининграде. Подписка предусматривала возможность получения новостей от предвыборного штаба кандидатов. Наиболее активным избирателям предлагали отправлять наказы и жалобы кандидату с помощью SMS. С тех пор подвиг «Билайн» никто из операторов не повторял.

СОЗДАНИЕ SMS-КАНАЛА

В рамках работы канала существует не менее двух вариантов доставки информации избирателю:

1. С помощью традиционной SMS-рассылки.

2. С помощью размещения канала в меню SIM-карты услуг оператора сотовой связи. Мы уже описывали этот формат ранее в разделе, посвященном организации SMS-платежей.

В любом случае SMS-канал не только мгновенно доставляет избирателям информацию о кандидате, но и подсознательно делает ее легитимной. В основном подписчики рассуждают следующим образом: то, что прислали мне, а тем более то, что доступно с помощью оператора сотовой связи, скорее всего правда. Кстати, канал может быть сделан не только для одного кандидата, но и для партии либо как сторонний независимый проект.

Структура канала может варьироваться аналогично содержанию интернет-сайта – от одного раздела до нескольких. Можно присвоить собственный код каждому разделу в рамках канала – себестоимость канала от количества разделов практически не меняется. Например, партия «За любовь!», кандидаты которой одновременно участвуют в избирательной кампании по нескольким округам, может открыть вариант персональной подписки на новости каждого кандидата. В таком случае абонент, отправивший SMS со словом ZAL, получит еще одно сообщение, в котором ему будет предложено выбрать новости интересующего его кандидата.


ПРИМЕР СТРУКТУРЫ SMS-КАНАЛА


Пример SMS на экране телефона.

Избиратель может оформить подписку на новости по следующим разделам:

– Новости партии (код подписки part).

– Новости лидера (код подписки lider).

– Новости из Энска – в разделе размещаются новости о кандидате Иванове И.И., баллотирующемся от партии в данном городе (код подписки ensk).

– Новости из Эмска – в разделе размещаются новости о кандидате Петрове И.И., баллотирующемся от партии в данном городе (код подписки emsk), и т. п.

– Все новости (код подписки vse).

Чтобы о канале узнали избиратели, кандидаты размещают сервисный номер для подписки на своих предвыборных информационно-агитационных материалах. Например, на агитационных материалах партии «За любовь!» можно разместить: «Отправь SMS ZAL или ЗАЛ на номер ****, чтобы получать новости партии». Если у кандидата устойчивое финансовое положение, можно организовать подписку таким образом, что все входящие SMS-сообщения для избирателя будут бесплатными. Такой аттракцион неслыханной щедрости обойдется кандидату в среднем не более чем в 300 у. е. за десять тысяч сообщений.

Предполагаемые результаты.

Практические:

– распространение информации о кандидате формирует у избирателя соответствующий образ народного избранника;

– распространение результатов exit-polls в день голосования.

Аналитические:

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

Примечание

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


Анализ CIL-кода - А. Г. Сивак

Напомним, что компоновочный блок не содержит специфических для платформы инструкций, а содержит независимый от платформы CIL-код. Когда среда выполнения .NET загружает компоновочный блок в память, этот CIL-код компилируется (с помощью JIT-компилятора) в инструкции, понятные для данной платформы. Если выполнить двойной щелчок на строке метода TurboBoost() класса SportsCar, с помощью ildasm.exe откроется новое окно, в котором будут показаны CIL-инструкции.

.method public hidebysig virtual instance void TurboBoost() cil managed {

 // Code size 17 (0x11)

 .maxstack 2

 IL_0000: ldstr "Ramming speed!"

 IL_0005: ldstr "Faster is better…"

 IL_000a: call valuetype [System.Windows.Forms] System.Windows.Forms.DialogResult [System.Windows.Forms] System.Windows.Forms.MessageBox::Show(string, string)

 IL_000f: pop

 IL_0010: ret

} // end of method SportsCar::TurboBoost

Обратите внимание на то, что для идентификации метода, определенного типом SportsCar, используется лексема .method. Члены-переменные, определенные типом, обозначаются лексемой .field. Напомним, что класс Car определяет набор защищенных данных, например, таких как currSpeed.

.field family int 16 currSpeed

Свойства обозначены лексемой.property. Этот CIL-код описывает открытое свойство CurrSpeed (заметьте, что характеристики read/write свойства обозначаются лексемами .get и .set).

.property instance int16 CurrSpeed() {

 .get instance int16 CarLibrary.Car::get_CurrSpeed()

 .set instance void CarLibrary.Car::set_CurrSpeed(int16)

} // end of property Car::CurrSpeed


понедельник, 25 октября 2010 г.

ПИСЬМОНОСЕЦ: Письмоносец | Журнал «Компьютерра»

Здраствуйте, уважаемая Редакция КТ!

Спасибо за журнал.

О новом дизайне «КТ» — стал менее удобным (читабельным)… Единственное улучшение — отсутствие иллюстрации на развороте в разделе «Новости», раздражало очень, так как чаще всего журнал читается не развернутым на столе, а сложенным вдвое и в транспорте.

Сюда же относятся и другие проблемы: мелкий шрифт и узкие внутренние поля — сделайте шрифт покрупнее, сделайте узкими внешние поля! Пожалуйста!

Кроме того, есть ощущение, что из-за «формата» страдает наполнение — выделенное под статью (раздел) пространство наполняется текстом, а не смыслом. Крупные заголовки, подзаголовки, подподзаголовки, увеличенный межстрочный интервал, часто бессмысленные (как по размеру, так и по содержанию) иллюстрации и вставки, повторяющие текст самой статьи… Для тугих на ухо повторяете, что ли?!

«Читайте в следующем номере» — потерянная страница: случайный читатель вряд ли соблазниться, а постоянные в любом случае купят следующий номер.

проDigi — тихий ужас в стиле недавно появившегося какого-то Гагнидзе (еле сдержался, чтобы не поменять пару букв). Судя по фотографии Вильянова — отъевшегося и высокомерного, — гл. ред. единственный, кому эта макулатура приносит удовлетворение.

Не претендую «на истину в последней инстанции», всё — ИМХО.

С уважением,

Денис Роев

***

День добрый, «Компьютерра».

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

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

А последний (662) номер совсем огорчил, ни про Живчика 8800, ни про RTM-релиз Висты. Зато дважды про подставку от Логитеч. Не терзайте себя, посвятите ей целый номер.

Продиги долой, берегите лес, кому надо, тот в Инете обзоры трубок нароет, гораздо более осмысленные.

Бёрда Киви, Дона Педалиса и особенно Ванаха — в каждый номер! Пока вы единственный журнал, который обращен к мозгу, а не к кошельку читателя.

Как жаль, если придется избавляться от привычки вас читать.

Vektor

***

Доброго времени, господа!

Выйдет ли «Компьютерра» 46(666), или всё же номер будет изменен? С одной стороны, многие боятся «числа зверя», с другой — может, был бы смысл развеять сей миф выпуском великолепного номера журнала.

Удачи, Александр

***

Доброго дня!

По мне, ProDigi только полезную площадь занимает своими бездарными статьями, плюс к этому, он очень часто просто не адекватен в отношении событий внешнего мира. По-моему ему просто пора в деревню на пенсию с пожизненным запретом публиковаться в прессе. Также, как ваш большой поклонник (скоро бывший) скажу, что новым дизайном и контентом вы просто добили Nерру, пока еще покупаю, но уже осознаю на 100%, что это просто инерция.

Руль Trust GM-3500R получает Денис Роев.




В. В. Мельниченко / Настройка WinRAR

Как и любая программа, разработанная под Windows, WinRAR может предложить вам настройки, установленные по умолчанию. Но для улучшения работы некоторые из них желательно изменить. Если вы — пользователь ленивый, то можете сразу приступать к работе (см. параграф "Основные функции WinRAR" далее). Вам же будет хуже! (Это не угроза, а напутствие на дорожку.)

Если же вы дотошный и трудолюбивый пользователь, то вы не поленитесь произвести некоторые настройки, и сразу же заметите, что программа начала работать немного лучше. Итак, настроим-понастроим…

Тщательно прицелившись мышью, попадите на пункт меню Параметры и выберите Установки.… Будьте бдительны: ломать — не строить.

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

На вкладке Общие (рис. 18.3) вы можете настроить WinRAR на работу в системе. Выберите Низкий приоритет, если компьютер слегка слабоват для обработки больших задач. ("Windows — система многозадачная: «глючит» и работает одновременно." — Народная мудрость)

Рис. 18.3. Настройка общих параметров работы WinRAR в системе

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

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

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

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

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

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

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

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

В подгруппе Выбор решите, как вам удобнее работать с файлами и архивами: Открывать по одному щелчку, как в Интернет-ссылках (последние версии операционных систем поддерживают такую настройку), или Открывать по двум щелчкам (старый «дедовский» способ, когда один щелчок — выделение, а второй - выполнение "приказа"). Имена файлов - выберите, в каком порядке вы хотели бы видеть отображаемую информацию.

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

Вкладка Интеграция знакома вам из процесса установки. Именно она была выведена последней перед завершением установки. И если вы отметили необходимые вам функции, то скорее жмите OK, и смело приступайте к созданию архивов.

В WinRar можно Экспортировать настройки в файл, сохранить этот файл на диске, а после переустановки программы Импортировать параметры из файла в установленную программу (вместо того, чтобы повторно настраивать ее).


среда, 13 октября 2010 г.

Фокус 2-й — нарезные снаряды - Александр Борисович Широкорад

Как уже говорилось, в 50–70-х годах XIX века были изготовлены десятки систем, снаряды которых имели нарезы или выступы. В советских артиллерийских системах для нарезных снарядов устройство канала мало отличалось от обычных каналов образца 1877 г., основным отличием была несколько большая глубина нарезов. И опять, как было с полигональными снарядами, Артуправление РККА не ограничилось испытанием одного образца, а решило сразу вводить нарезные снаряды во всех типах орудий. Чтобы представить объем испытаний нарезных снарядов, я, как и в случае с полигональными снарядами, буду рассказывать о них не в хронологическом порядке, а по мере возрастания калибра.

В 1933–1936 гг. на НИАПе проводили стрельбы из 122-мм пушек обр. 1931 г. нарезными снарядами. Для этого был изготовлен ствол с крутизной нарезки 12 калибров, глубиной нарезов 3,0 мм и объемом каморы 9,889 дм3. Стрельба велась нарезными снарядами с глубиной нарезки 3,0 мм.


Таблица 17. Данные нарезных снарядов

При стрельбе 10 июня 1936 г. снарядом чертежа 6105 при заряде 5,0 кг достигнута начальная скорость 550 м/с и дальность 14 300 м (при угле возвышения +35°).

Однако наряду с преимуществом в весе нарезные снаряды имели и ряд недостатков, так как при увеличении длины снаряда сверх 5 калибров резко падала кучность. Заряжание пушек нарезными снарядами производилось весьма «хитрым» способом (чтобы нарезы снаряда входили в нарезы канала), что приводило к существенному уменьшению скорострельности.

В 1937 г. опыты со 122-мм нарезными снарядами были прекращены.

В 1932 г. из 152-мм пушек обр. 1910 и 1910/1930 гг. впервые были произведены стрельбы нарезными снарядами, разработанными в АНИИ.[39] Стволы имели штатную крутизну нарезки (25 калибров).


Таблица 18. Данные стрельбы 11 декабря 1933 г. из 152-мм пушки обр. 1910/1930 г. нарезными снарядами с зарядом 6,0 кг пороха марки 15/7

Кучность нарезных снарядов оказалась неудовлетворительной. Заряжание нарезными снарядами производилось досыльным способом, то есть с помощью особых приспособлений, что терпимо на НИАПе, но неудобно в полевых условиях. По результатам испытаний конструкторы АНИИ решили увеличить крутизну нарезки для увеличения кучности стрельбы, (рис. 5.2).


Рис. 5.2. Нарезной 37-мм снаряд.


В апреле 1933 г. заводу «Баррикады» был заказан ствол 152-мм пушки обр. 1910/1930 г. с крутой глубокой нарезкой. Ствол был предназначен для опытов с беспоясковыми (нарезными) снарядами.


Данные опытного ствола

Калибр, мм — 152.4

Крутизна нарезов, клб — 12

Число нарезов — 36

Глубина нареза, мм — 2,8

Ширина нареза, мм — 9,0

Ширина поля, мм — 4,23


Такой ствол был изготовлен и испытан в сентябре 1934 г. Для стрельбы из этого ствола заводу № 73 было заказано 100 нарезных снарядов чертежа 5996 и 100 снарядов чертежа 5719.


Таблица 19. Данные нарезных снарядов

Таблица 20. Результаты стрельб нарезными снарядами

Перспектива увеличения веса 152-мм снарядов в 2–3 раза за счет введения нарезных (беспоясковых) снарядов была крайне соблазнительна для начальства, но добиться удовлетворительной кучности тяжелыми и длинными снарядами так и не удалось. Заряжание нарезными снарядами тоже осталось неудобным.

14 июля1933 г. в Артуправлении был рассмотрен проект ствола 152-мм пушки Б-10 с углубленными нарезами под нарезные и поясковые снаряды, разработанные АНИИ. Заводу «Большевик» был дан заказ перенарезать ствол № 1 к 1 сентября 1933 г.

На стволе № 1 нарезы углубили с 1,5 мм до 2,8 мм, а канал ствола для удобства заряжания сделали нарезным. Крутизна нарезов была изменена с 25 до 20 калибров. Объем зарядной каморы не изменился. Ствол был приспособлен для стрельбы нарезными снарядами.

Однако особых успехов при стрельбе нарезными снарядами достичь не удалось. Мало того, уменьшение диаметра каморы против обыкновенного привело к удлинению каморы и сокращению пути снаряда в канале на 2,5 калибра, что сделало затруднительным подбор зарядов под давление 2850 кг/см2 и начальную скорость 880 м/с при снаряде весом 49 кг. Начальная скорость получена лишь 862–865 м/с при давлении в канале 2965–3024 кг/см2.

Не обошлось и без попытки перевода на нарезные снаряды основного советского орудия большой мощности — 203-мм гаубицы Б-4. В 1934 г. завод «Большевик» получил заказ на опытный ствол Б-4 для стрельбы нарезными снарядами. Крутизна нарезов ствола постоянная — 12 калибров, число нарезов — 48, глубина нареза — 2 м, ширина нареза — 9 мм, ширина поля — 4,29 мм.

Изготовление опытного ствола затянулось, и стрельбы из него начались лишь в конце 1936 г. В декабре 1936 года на НИАПе из опытного ствола Б-4 велись стрельбы нарезными снарядами весом 172,5–174,4 кг, длиной 6,25 калибра, снаряженные 22,2 кг взрывчатого вещества. На снарядах имелись нарезы глубиной 1,9 мм.


Таблица 21. Результаты стрельбы 30 декабря 1936 г.

* Дальность приведенная (т. е. приведенная к нормальным атмосферным условиям).


Положительных результатов при стрельбе нарезными снарядами добиться не удалось. А 25 марта 1938 г. Артуправление предложило НИАПу «отправить на завод „Большевик“ не позднее 10.04.1938 г. опытный ствол Б-4 № 128 с крутизной нарезки 12 клб для исправления нарезов». Дальнейшая судьба этого ствола неизвестна.


воскресенье, 10 октября 2010 г.

А. Алексашин / Тестирование в рамках контракта

Мы рассматриваем модульное тестирование, как тестирование исходя из контракта (см. "Проектирование по контракту"). Нам бы хотелось написать процедуры тестирования, гарантирующие, что данный модуль соблюдает соответствующий контракт. При этом выясняются два момента: отвечает ли программа условиям контракта, и означает ли контракт на самом деле то, что мы о нем думаем. Мы хотим проверить, обладает ли модуль функциональными характеристиками, которые в нем заложены, используя разнообразные тестовые процедуры и граничные условия.

Что это означает на практике? Рассмотрим подпрограмму извлечения квадратного корня, с которой мы впервые встретились в разделе "ППК и аварийное завершение работы программы". Ее контракт довольно прост:

require:

   argument >=0

ensure:

  abs((result*result)–argument) < epsilon

Он указывает на моменты, нуждающиеся в проверке:

• Передать отрицательный аргумент и удостовериться в том, что он отклонен

• Передать аргумент, равный нулю, и удостовериться в том, что он принят (это граничное значение)

• Передать значение в интервале от нуля до максимально выражаемого параметра и проверить, что разность между квадратом результата и исходным аргументом меньше некоторой величины "epsilon"

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

public void testValue(double num, double expected) {

double result = 0.0;

try {    // We may throw a

result = mySqrt(num); // precondition exception

}

catch (Throwable e) {

if (num<0.0) // If input is «0, then

   Return; // we're expecting the

Else // exception, otherwise

   Assert(false); // force a test failure

}

assert(Math.abs(expected-result)<epsilon);

}

Затем мы можем вызвать эту подпрограмму, чтобы проверить нашу функцию излечения квадратного корня:

TestValue(-4.0, 0.0);

TestValue(0.0, 0.0);

TestValue(2.0, 1.4142135624);

TestValue(64.0, 8.0);

TestValue(1.0e7, 3162.2776602);

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

Предположим, есть модуль А, использующий модули LinkedList и Sort. Мы осуществляем тестирование в следующем порядке:

1. Полностью тестируем контракт модуля LinkedList.

2. Полностью тестируем контракт модуля Sort.

3. Тестируем контракт модуля А, который полагается на другие контракты, но не раскрывает их напрямую.

При этом способе тестирования вы вначале обязаны проводить тестирование подкомпонентов.

Если модули LinkedList и Sort успешно прошли тестирование, а модуль А испытания не прошел, мы можем быть вполне уверены, что проблема заключается в модуле А или в том, как модуль А использует один из подкомпонентов. Эта методика способствует уменьшению трудоемкости процесса отладки: можно быстро сосредоточиться на вероятном источнике проблем в пределах модуля А и не тратить время на изучение его подкомпонентов.

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


Подсказка 48: Проектируйте с учетом тестирования


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


А. Г. Сивак | Абсолютные имена типов

Строго говоря, при объявлении типа, определенного во внешнем пространстве имен, в C# не обязательно использовать ключевое слово using. Можно использовать полное, или абсолютное имя типа, которое, как следует из главы 1, состоит из имени типа с добавленным префиксом пространства имен, определяющего данный тип.

// Заметьте, что здесь не используется 'using MyShapes'.

using System;

namespace MyApp {

 class ShapeTester {

  static void Main(string[] args) {

   MyShapes.Hexagon h = new MyShapes.Hexagon();

   MyShapes.Circle с = new MyShapes.Circle();

   MyShapes.Square s = new MyShapes.Square();

  }

 }

}

Обычно нет необходимости использовать полное имя. Это только увеличивает объем ввода с клавиатуры, но не дает никаких преимуществ ни с точки зрения размеров программного кода, ни с точки зрения производительности программы. На самом деле в программном коде CIL типы всегда указываются с полным именем. С этой точки зрения ключевое слово using в C# просто экономит время при наборе программного кода.

Однако абсолютные имена могут быть весьма полезны (а иногда и необходимы) тогда, когда возникают конфликты при использовании пространств имен, содержащих типы с одинаковыми именами. Предположим, что есть еще одно пространство имен My3DShapes, в котором определяются три класса для визуализации пространственных форм.

// Другое пространство форм…

using System;

namespace My3DShapes {

 // Трехмерный класс Circle.

 class circle{}

 // Трехмерный класс Hexagon.

 class Hexagon{}

 // Трехмерный класс Square.

 class Square{}

}

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

// Множество неоднозначностей!

using System;

using MyShapes;

using My3DShapes;

namespace MyApp {

 class ShapeTester {

  static void Main(string[] args) {

   // На какое пространство имен ссылаются?

   Hexagon b = new Hexagon(); // Ошибка компиляции!

   Circle с = new Circle(); // Ошибка компиляции!

   Square s = new Square(); // Ошибка компиляции!

  }

 }

}

Неоднозначность разрешится, если использовать абсолютное имя типа

// Теперь неоднозначность ликвидирована.

static void Main(string[] args) {

 Му3DShapes.Hexagon h = new My3DShapes.Hexagon();

 My3DShapes.Circle с = new My3DShrapes.Circle();

 MyShapes.Square s = new MyShapes.Square();

}


вторник, 5 октября 2010 г.

H. M. Ручко / Асинхронные и синхронные процессы

Асинхронные процессы выполняются независимо один от другого. Это означает, что процесс А будет выполняться до конца безотносительно к процессу В. Между асинхронными процессами могут быть прямые родственные («родитель-сын») отношения, а могут и не быть. Если процесс А создает процесс В, они оба могут выполняться независимо, но в некоторый момент родитель должен получить статус завершения сыновнего процесса. Если между процессами нет прямых родственных отношений, у них может быть общий родитель.

Асинхронные процессы могут выполняться последовательно, параллельно или с перекрытием. Эти сценарии изображены на рис. 3.12. В ситуации 1 до самого конца выполняется процесс А, затем процесс В и процесс С выполняются до самого конца. Это и есть последовательное выполнение процессов. В ситуации 2 процессы выполняются одновременно. Процессы А и В - активные процессы. Во время выполнения процесса А процесс В находится в состоянии ожидания. В течение некоторого интервала времени оба процесса пребывают в ждущем режиме. Затем процесс В «просыпается», причем раньше процесса А, а через некоторое время «просыпается» и процесс А, и теперь оба процесса выполняются одновременно. Эта ситуация показывает, что асинхронные процессы могут выполняться одновременно только в течение определенных интервалов времени. В ситуации 3 выполнение процессов А и В перекрывается.


Рис. 3.12. Возможные сценарии асинхронных и синхронных процессов

Асинхронные процессы могут совместно использовать такие ресурсы, как файлы или память. Это может потребовать (или не потребовать) синхронизации или взаимодействия при разделении ресурсов. Если процессы выполняются последовательно (ситуация 1), то они не потребуют никакой синхронизации. Например, все три процесса, А, В и С, могут разделять некоторую глобальную переменную. Процесс А (перед тем как завершиться) записывает значение в эту переменную, затем процесс В во время своего выполнения считывает данные, хранимые в этой переменной и (перед тем как завершиться) записывает в нее «свое» значение. Затем во время своего выполнения процесс С считывает данные из этой переменной. Но в ситуациях 2 и 3 процессы могут попытаться одновременно модифицировать эту переменную, поэтому здесь не обойтись без синхронизации доступа к ней.

Мы определяем синхронные процессы как процессы с перемежающимся выполнением, когда один процесс приостанавливает свое выполнение до тех пор, пока не з аверш ится другой - Например, процесс А, родительский, при выполнении создает процесс В, сыновний. Процесс А приостанавливает свое выполнение до тех пор, пока не завершится процесс В. После завершения процесса В его выходной код помещается в таблицу процессов. Тем самым процесс А уведомляется о завершении процecca В. Процесс А может продолжить выполнение, а затем завершиться или завершиться немедленно. В этом случае выполнение процессов А и В является синхронизированным. Сценарий синхронного выполнения процессов А и В (для сравнения с асинхронным) также показан на рис. 3.12.


суббота, 2 октября 2010 г.

Инструменты проектирования Windows Forms / А. Г. Сивак

Windows Forms является средством создания приложений, возможности которого мы рассмотрим позже. А сейчас, чтобы продолжить рассмотрение SharpDevelop, щелкните на ярлыке вкладки Design внизу окна программного кода MainForm.cs. Откроется интегрированное окно проектирования Windows Forms,

С помощью элементов из раздела Windows Forms в окне Tools можно построить графический интерфейс (GUI) для создаваемой формы. Для примера поместите один элемент типа Button (кнопка) в свою главную форму, сначала выбрав пиктограмму Button, а затем щелкнув в окне проектирования. Для изменения вида любого элемента, можно использовать окно Properties (Свойства), которое активизируется с помощью выбора View>Properties из меню (рис. 2.15). Выберите Button из раскрывающегося списка этого окна и укажите нужные параметры для свойств этого типа (например, BackСolor или Text).

Рис. 2.15. Окно свойств

В этом же окне можно указать параметры обработки событий соответствующего элемента графического интерфейса. Для этого сначала щелкните на пиктограмме с изображением молнии (вверху окна свойств), а затем выберите из раскрывающегося списка графический элемент, с которым вы хотите работать (в данном случае это Button). Наконец, задайте правила обработки события Click (щелчок), напечатав имя метода, который должен вызываться при каждом щелчке пользователя на данной кнопке (рис. 2.16).

Рис. 2.16. Установка правил обработки событий в окне свойств

После нажатия клавиши ‹Enter› SharpDevelop сгенерирует программный код заглушки для вашего нового метода. Для данного примера добавите в программу обработки события следующий программный код.

void ButtonClicked(object sender, System.EventArgs e) {

 // Поместим в заголовок формы новое сообщение.

 this.Text = "Прекратите щелкать на моей кнопке!";

}

Теперь можно запустить программу на выполнение (выбрав Debug>Run из меню). Ясно, что в данном случае при щелчке на кнопке мы должны увидеть изменившийся заголовок окна формы.

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


Где и как нужно покупать подержанный ноутбук / Виктор Гольцман

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

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

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

Покупая б/у ноутбук в фирме, всегда нужно оговаривать возможность возврата денег. Иначе в случае обнаружения дефектов (например, «битых» секторов на жестком диске) у вас могут забрать компьютер на несколько недель, мотивируя это гарантийным ремонтом, а в это время вы будете сидеть без ноутбука. К тому же будет заканчиваться гарантия на находящийся в ремонте ноутбук. К минусам покупки мобильного компьютера в фирме можно также отнести чуть более высокую цену, нежели заявленная на ту же модель в частных объявлениях. Этим фирмам ведь тоже надо заработать.

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

При покупке ноутбука по объявлению также постарайтесь настоять на испытательном сроке, то есть возможном возврате денег в обмен на приобретенный товар. В данном случае вам, скорее всего, не удастся договориться даже на неделю пробного периода, но на пару суток – вполне реально. Этого времени вполне достаточно, чтобы сделать собственные выводы о качестве и работоспособности портативного компьютера.

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

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

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

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

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