Статьи на околокомпьютерную тематику

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

Ваша оценка: Нет Рейтинг: 4 (всего оценок: 1)

Программирование

В этом разделе размещены статьи, касающиеся темы программирования.

Голосов пока нет

Заметки по локализации программ на Delphi

- Чем отличается программист от шамана? - Практически ничем: оба произносят непонятные слова, совершают непонятные действия, а потом не могут объяснить, как это работает.
В те давние времена студенчества, когда я жил в общаге, случилось, как-то раз, написать таймер с обратным отсчетом и поддержкой скинов. После того как таймер несколько раз спас мою единственную кастрюлю и ужин, программа таинственным образом обросла функциональностью, хелпом, инсталлятором, получила гордое название SDATimer, и прочно обосновалась в Интернете под шареварной лицензией.
Уже тогда, прочитав в "Кулибе" Валентина Озерова статью о локализации программ с помощью динамически подключаемых библиотек ресурсов, была сделана удачная попытка перевода программы на родную беларускую мову с помощью Resource DLL Wizard. Окрыленный успехом, не долго думая, поместил в пакет инсталляции файл localization.txt, с перечислением всех надписей в программе, в надежде на добрую душу добровольца, желающего иметь интерфейс программы на родном языке.

Много воды утекло с того времени и вот, в один прекрасный момент, такой доброволец нашелся и прислал перевод интерфейса на испанский язык. Как часто получается при программировании в Delphi: "Меньше думай, больше делай" - гораздо быстрее склепать предварительную версию, немного с ней поработать, потешить свою душу ощущением собственной крутости, а потом переписать заново так, чтобы к старости не было обидно за бесцельно прожитые годы. В соответствии с этим принципом был запущен Resource DLL Wizard, определена локализация как 'Испанский (международная сортировка)', в полученном проекте все надписи были изменены, отрегулированы размеры элементов под длину надписей, все это скомпилировано. На выходе получился файл SDATimer.ESN, который и был помещен в рабочий каталог программы. В Панели Управления (вкладка 'Язык и региональные стандарты') были установлены настройки локали на 'Испанский (Испания)', программа перезапущена, и, удивительно, все вроде бы заработало - все надписи поменялись, интерфейс стал подозрительно испанским и функциональность программы полностью сохранилась.
На радостях SDATimer.ESN отправлен на окончательное тестирование, и тут, как всегда подкралась незаметная мысль: "А что, если бы...?". Сразу же обнаружился небольшой облом: при изменении настройки локали на любую, отличную от 'Испанский (Испания)', например, на 'Испанский (Гондурас)', интерфейс программы менялся с подозрительно испанского на другой, очень похожий на исходный английский (что на самом деле и было). В попытках понять, что произошло, и почему не поддерживается гондурасский, был перелопачен Delphi Help, Windows SDK Help, Delphi World 6. Несколько раз проект перекомпилировался под разные локали, но поддержка "единого и могучего" испанского языка не получалась. В конце концов была вспомнена та древняя мудрость, почерпнутая в "Кулибе" - загрузка файла локализации происходит согласно расширению файла динамически подключаемой библиотеки ресурсов. Тогда, собравши остатки интеллекта, еще не полностью угробленного учебой и работой, все быстро соотнеслось со словами в Delphi Help о том, что первые две буквы расширения файла ресурсов отвечают за базовый язык, а третья - за конкретную локализацию для данного языка. Исходный многострадальный файл SDATimer.ESN был переименован в SDATimer.ES, и, как не странно, интерфейс стал испанским при использовании любой испанской локали.
В качестве лирического отступления хочу отметить преимущество метода использования динамически подключаемых библиотек ресурсов для локализации программ:

  • При данном методе локализации исчезает проблема несоответствия размеров элементов интерфейса длине подписей - можно регулировать не только размеры, но и расположение, как самой формы, так и элементов интерфейса формы без потери функциональности и перекомпилирования основной программы.
  • Данный метод является стандартным методом локализации в Delphi и, согласно Windows SDK Help, Windows. В комплекте Delphi есть Translation Manager для облегчения перевода строк ресурсов, имеется возможность создавать репозитории строк для перевода, в настройках проекта при отладке легко установить текущий язык для тестирования.
  • При загрузке программы локализация включается автоматически, при обнаружении соответствующих языковых настроек системы, что позволяет избежать несоответствия шрифтов, установленных в системе, языку интерфейса (“кракозябры” в надписях популярности не добавляют).

Так как “бесплатный сыр бывает в мышеловке или в мышке ловкой”, то и при применении динамически подключаемых библиотек ресурсов приходится решать проблему большого размера библиотек локализации. Одним из выходов является использование инсталляторов с поддержкой архивации, причем при архивации размер библиотеки уменьшается в несколько раз (в случае с SDATimer, размер файла инсталляции вырос на 50Kb, при размере SDATimer.ES в 179Kb).
Хотелось бы закончить данные заметки хэппи-эндом, но в результате поисков найдены исходники Demo RichEdit, поставляемые с Delphi, в них те же самые динамические библиотеки ресурсов подключаются принудительно из меню самой программы. Так что хэппи-энд будет, но уже не в рамках этой статьи.
Как иллюстрацию метода можно скачать SDATimer 1.82 здесь: http://sdisle.com/sdatimer/sdatimersetup.exe

Голосов пока нет

Язык программирования Форт

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

Окунемся в историю Форта (Forth). В начале 1970х годов Чарльз Мур занялся разработкой программного обеспечения для микроЭВМ, управляющей работой радиотелескопа. Поскольку программирование на Ассемблере привело к неуправляемости разработки довольно сложной программы, а для использующейся микроЭВМ из-за аппаратных ограничений не было языка высокого уровня, Чарльз Мур приступил к созданию компактного и мощного языка программирования, позволившего с блеском решить поставленные перед ним задачи. Успех нового языка программирования определился тем, что на ограниченных ресурсах устройства была создана быстрая и функциональная программа, позволившая делать намного больше, чем первоначально планировалось в техническом задании.
Форт (от англ. forth — вперед, получившееся из-за необходимости сократить слово fourth — четвертый, до пяти букв из-за ограничений операционной системы на длину имени файла) в 1976 году стал стандартным языком для программирования для американского астрономического общества. Благодаря высокой степени переносимости и компактности, а также быстродействию, Форт до 1990х активно применялся во множестве приборов с микроконтроллерным управлением (спектрограф на Шаттле, микромодули управления искусственными спутниками Земли, для системы управления в аэропорту Эр-Рияда, системах компьютерного зрения, автоматизации анализа крови и кардиологического контроля, карманных переводчиках). Форт выступает прародителем такого широко известного языка управления печатью как PostScript.
По своей структуре Форт представляет собой набор примитивов — слов, которые участвуют в определении других слов. Важная особенность Форта — использование стека для передачи параметров между словами, такая конструкция позволяет очень гибко и просто реализовывать сложные концепции. Наборы слов, относящиеся к определенной области, могут выделяться в словари. Иерархическая структура словарей позволяет естественно организовывать наследование слов от словаря-родителя. Базовый словарь форта составляет менее четырех десятков слов, и уже он позволяет получать полноценные программы расширением исходного словаря.
Форт сам для себя является метасистемой — в нем объединены функции компилятора и интерпретатора, Форт может использоваться без поддержки со стороны операционной системы и использоваться для того, чтобы компилировать самого себя, в том числе и на другие платформы.
В отличие от большинства языков программирования, которые имеют жесткую структуру, не позволяющую изменять синтаксис и многие базовые элементы языка, ничто не мешает на Форте написать модификацию системы, понимающую синтаксис той предметной области, для которой пишется программа. Ярким примером является написание Форт-ассемблера для конкретного процессора, выполняемое за один рабочий день квалифицированным фортером. Мало того, такой ассемблер поддерживает структурное программирование и прозрачную вставку в ассемблерный код слов из словаря самого Форта. Таким же образом реализуется поддержка объектно-ориентированного программирования.
До сих пор популярна тема создания Форт-процессоров, система команд которых является машинным представлением наиболее часто используемых слов-примитивов. Благодаря минимализму базовой Форт-системы это легко реализуемо, тем более что программируемые матрицы логических элементов сейчас достигли таких размеров, что Форт-процессор интегрируется на оставшиеся после программирования основной логики 10% вентилей как бонус. Это что-то из разряда такого: «А в углу нашей маленькой и уютной детской комнатки незаметно расположился аквариум с бегемотом».
Легкость написания Форт-систем привела к огромному разнообразию существующих реализаций — не писал свой Форт только ленивый фортер. Большое количество систем, достаточно плохо совместимых, поскольку имеется три стандарта Форта: Форт-79, Форт-83 и ANSI-Форт-94. Стандарты, хотя и описывают необходимый минимум слов для реализации, но дают огромный простор для самостоятельных изменений, что повсеместно и происходит. Существуют реализации Форта написанные на Ассемблере, Си, Питоне, Паскале, Яве, а также созданные с помощью целевых компиляторов других Форт-систем.
Как не хотелось бы радостно заявлять, что Форт живет полноценной жизнью языка программирования, однако это не совсем так. Форт прочно занял нишу как язык программирования микроконтроллеров, для которых надо организовать довольно сложную схему функционирования при минимуме ресурсов. Однако, примеры написания в современных условиях больших программ немногочисленны, поскольку скорость разработки на системах RAD превышает возможности Форт-систем.
Таким образом, по частоте использования, высокоуровневый язык программирования Форт находится даже ниже уровня Ассемблера. При решении проблем, требующих написания ассемблерного кода Форт имеет много преимуществ: компактность кода, структурный ассемблер, позволяющий легко внедрять в тело ассемблерных слов высокоуровневые определения. Для тех, кто хочет изучать и использовать Ассемблер, я бы порекомендовал начать это с изучения Форта, как я в свое время и сделал. Результатом такого метода обучения будет намного более быстрое и качественное освоение Ассемблера, тем более, что после изучения основ вам обязательно захочется сделать свою Форт-систему (как ни говори, практика — кузница умения).
Для меня Форт дал много — после освоения языка я стал замечать, что код в Дельфи стал более коротким и понятным, появилась привычка документировать основные методы и поля объектов (поскольку в Форт очень желательно описывать стековые диаграммы для каждого слова).
Благодаря изучению книги «Проектирование и программная реализация экспертных систем на персональных ЭВМ» Таусенда и Фохта, я почерпнул много информации о внутренней логике работы таких языков как Лисп и Пролог. Книга Келли и Спайса «Язык программирования ФОРТ» привела меня к четкому пониманию того, как можно написать свой язык программирования и что такое Форт-ассемблер. Для совершенствования стиля программирования оказалась совершенно неоценимой по влиянию на меня книга Лео Броуди «Способ мышления — Форт».
Форт может дать программисту много полезного, даже если он будет в дальнейшем программировать на другом языке. Форт дает то понятие дисциплины программирования, которое необходимо для создания рабочей и легко сопровождаемой программы. Плохому программисту Форт не прощает ошибок, а хорошего стимулирует к тому, чтобы стать великим.

Полезные ссылки по теме:
http://www.forth.org.ru/ — Russian FORTH Interest Group — на сайте размещена большая подборка книг и статей по Форту, много ссылок на существующие Форт-системы, интересующимся очень рекомендуется посетить
http://www.nncron.ru/index_ru.shtml — продвинутый планировщик задач под Windows, пример коммерчески успешной программы на языке Форт
http://winglion.ru/ — самодельный Форт-процессор, сайт содержит достаточно толковый форум по Форту
http://www.msyst.ru/quark.htm — Форт-система с поддержкой OpenGL в виде .dll
http://ronware.org/ — кроссплатформенный Форт Windows 32bit (x86) — Linux 32bit (x86) — WinCE (ARM)
http://forth.gsfc.nasa.gov/ — список систем NASA, управляемых Фортом

Ваша оценка: Нет Рейтинг: 5 (всего оценок: 1)

Разное

Здесь размещены статьи, не попавшие в другие разделы книги.

Ваша оценка: Нет Рейтинг: 4 (всего оценок: 1)

GPRS — теория и практика применения

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

Немного теории

GPRS (General Packet Radio Service — пакетная радиосвязь общего пользования) — надстройка над технологией мобильной связи GSM, позволяющая организовать обмен информацией мобильного телефона с сетью Интернет.

Принцип работы GPRS следующий: информация перед передачей собирается в пакеты, пакеты передаются в момент освобождения голосового канала GSM, что позволяет оператору связи более эффективно использовать возможности сети GSM. В большинстве сетей GSM отдается приоритет голосовому трафику, что означает низкую скорость обмена данными при высокой загруженности сети.
GPRS пакеты могут передаваться сразу по нескольким свободным каналам связи. Количество одновременно используемых входных и выходных каналов (тайм-слотов) определяют класс GPRS. Также, в зависимости от качества канала, может выбираться одна из четырех схем кодирования (при хорошем отношении сигнал/шум выбирается схема кодирования с большей скоростью передачи, но с меньшей устойчивостью к помехам). Данные о классах и схемах кодирования GPRS я объединил в соответствующие таблицы.

Классы GPRS
Класс GPRS Каналов приема Каналов передачи Всего
1 1 1 2
2 2 1 3
3 2 2 4
4 3 1 4
5 2 2 4
6 3 2 4
7 3 3 4
8 4 1 5
9 3 2 5
10 4 2 5
11 4 3 5
12 4 4 5
Схемы кодирования сигнала GPRS
Схема кодирования Максимальная скорость (Кбит/с)
CS1 9.05
CS2 13.4
CS3 15.6
CS4 21.4

Исходя из приведенных в таблицах данных, можно определить, что максимальная скорость приема данных составляет 85 килобит в секунду для GPRS Class 10. Скорость же передачи в большинстве классов GPRS меньше, причем суммарное количество используемых для передачи и приема каналов ограничено.

Выбор GPRS модема

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

Существует довольно большой класс USB и PC-Card модемов GPRS, однако доступность этих устройств достаточно низка, причем стоимость такого урезанного мобильного прилична. Многие модемы продаются уже со встроенной прошивкой под конкретного оператора связи, что может создать проблемы при смене своей телефонной компании.

Для большинства пользователей имеет смысл купить подержанный сотовый с поддержкой GPRS, и использовать его в качестве модема. Такой вариант позволит не только использовать возможности мобильного доступа в Интернет, но и приобрести себе дополнительную возможность голосовой связи. На что же следует обратить внимание?
Сотовый телефон T610 вместе с USB дата-кабелем
Первое — телефон должен поддерживать класс GPRS 8 или 10. Именно такие телефоны смогут задействовать все возможности GPRS по приему данных. Более старые телефоны с поддержкой низкого класса GPRS лучше не приобретать.

Второе — у телефона желательно наличие богатых коммуникативных способностей — портов Bluetooth, IrDA, а также наличие USB или COM дата-кабеля.

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

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

В свое время, я остановил свой выбор на телефоне Sony Ericsson T610 (это был мой второй T610, первое время я их часто путал) — телефоне в алюминиевом корпусе с поддержкой GPRS Class 8, Bluetooth, IrDA, USB и COM дата-кабелями. Он обошелся мне в 90 тысяч белорусских рублей, при проверке оказалось, что не работает встроенная фотокамера телефона, на работоспособности модема это не сказалось, однако такой вариант сильно снизил цену.

Установка и настройка GPRS модема

Установка и настройка GPRS модема не составляет никаких сложностей — встроенная начинка как мобильного телефона, так и отдельного GPRS модема, представляет собой обычный аппаратный COM-модем, который определяется и устанавливается «на ура» любой современной операционной системой.

После установки сим-карты в телефон вам нужно будет настроить параметры точки доступа в Интернет. Многие операторы мобильной связи предоставляют сервис автоматической настройки. Если вы затрудняетесь настроить эти параметры — обратитесь в службу поддержки вашего оператора связи.

Что следует знать об установке телефона как GPRS модема под Windows?

При подключении через COM дата-кабель или инфракрасный порт (IrDA) потребуется в мастере добавления нового модема указать путь к файлу modem-scripts для вашего телефона. Если у вас нет такого файла, то в любом поисковике наберите фразу: «modem-scripts модель_вашего_телефона download» и скачайте нужный файл, пользуясь результатами поиска. После установки модема пропишите в строке инициализации данные, предоставленные вашим оператором связи. После этих нехитрых действий настройку модема можно считать оконченной. Далее все действия по доступу в Интернет идентичны таковым для dial-up связи.

Если вы оказались несчастным (счастливым?) владельцем USB дата-кабеля, приготовьтесь к тому, что в большинстве USB дата-кабелей связь с телефоном идет при помощи все того же последовательного порта COM (в таких USB дата-кабелях установлена микросхема USB-to-COM). Следствием данного обстоятельства является необходимость установки драйвера для сопряжения с микросхемой USB-to-COM. Если вам удалось найти соответствующий драйвер на CD, поставляемом с дата-кабелем, то дальнейшая установка модема не составит проблемы.
Наиболее приятный способ использования GPRS модема сотового телефона — доступ через Bluetooth порт. Если в вашем компьютере есть Bluetooth адаптер, то настройка будет заключаться в установке связи между компьютером и телефоном, прописыванием ПИН-кода для связи и, в некоторых случаях, установкой файла modem-scripts и прописыванием строки инициализации для модема.
Пример плохого USB Bluetooth адаптера
В том случае, если вы покупаете внешний USB Bluetooth, будьте осторожны — для некоторых моделей в комплекте идут драйверы с урезанной функциональностью (полная же версия будет стоить дополнительных денег). Возможно, будет лучшим выходом взять USB Bluetooth без драйверов в комплекте, если на коробке будет написано что-то вроде этого: «Для установки устройства не требуется дополнительных драйверов, устройство совместимо с Windows XP/2000/Vista». В любом случае, договаривайтесь с продавцом о возможности проверки устройства перед покупкой.

Что следует знать об установке телефона как GPRS модема под Linux?

Поскольку GPRS модем в сотовом — аппаратный, то и установка будет заключаться в определении COM-порта для доступа к модему в программе KPPP, установке строки инициализации модема и прописывании номера дозвона.

Для COM дата-кабеля нужно просто указать порт sttyX, где X — номер COM-порта. Для USB дата-кабеля часто определить порт доступа оказывается невозможным, из-за неспособности Linux (как и Windows, без соответствующего драйвера) определить тип микросхемы USB-to-COM.
Пример хорошего USB Bluetooth адаптера
Для настройки Bluetooth соединения (последовательность действий для ASP Linux 12 Carbon) нужно воспользоваться программой Kbluetooth (где установить возможность определения Bluetooth компьютера внешними устройствами). После установки связи телефона с компьютером (на телефоне запускается поиск устройств Bluetooth) и обмена ПИН-кодом, в программе покажется идентификационный номер телефона. Этот номер потребуется прописать в файле конфигурации портов Bluetooth по пути /ect/bluetooth/rfcomm.conf, указать там номер порта — rfcomm0 и установить флаг автоподключения порта при определении устройства в «yes». Далее в KPPP устанавливается порт модема rfcomm0, и дальнейшая работа происходит так же, как и для обычного COM-модема.

Пример файла rfcomm.conf
# RFCOMM configuration file.
rfcomm0 {
# # Automatically bind the device at startup
bind yes;
# # Bluetooth address of the device
device 00:0F:DE:33:08:44;
# # RFCOMM channel for the connection
channel 1;
# # Description of the connection
comment "Bluetooth device T610";
}

EGPRS (EDGE)

В настоящее время в Беларуси внедряется связь 2.75G — EGPRS (EDGE). Связь EDGE предоставляет собой улучшенный вариант GPRS, в котором используются другие схемы кодирования передаваемых пакетов. Классы связи EGPRS такие же, как и у GPRS, однако скорость для одного тайм-слота может быть существенно выше (до 59,2Кбит/с).

Схемы кодирования сигнала EGPRS(EDGE)
Схема кодирования Максимальная скорость (Кбит/с)
MCS1 8.8
MCS2 11.2
MCS3 14.8
MCS4 17.6
MCS5 22.4
MCS6 29.6
MCS7 44.8
MCS8 54.4
MCS9 59.2

Заключение

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

Ваша оценка: Нет Рейтинг: 5 (3 голоса)