На одном обслуживаемом объекте промышленный компьютер выполняющий важные круглосуточные задачи по непонятным причинам периодически повисает стабильно раз в неделю. Длительное исследование проблемы результатов не дало, и сложилось стойкое убеждение что причина - дефект одного из компонентов материнской платы, т.е. чисто железная проблема. Было предложено задействовать встроенный в мать watchdog таймер, реализованный на чипе winbond w83627 представляющий Super I/O контроллер. Но одно дело выдвинуть идею, другое - ее воплотить. Этим и займемся...
Вычислительная машина ценна ровно настолько, насколько ценен использующий её человек. Но он обязан иметь идеи. Норберт Винер. "Кибернетика, или Управление и связь в животном и машине".
пятница, 18 декабря 2015 г.
пятница, 30 октября 2015 г.
Примеряем fxload
Новый проект наконец-то вышел на уровень когда требуется сопряжение USB моста микроконтроллерной платки с PC based компьютером верхнего уровня. Основная задача заключается в необходимости читать и записывать данные на борт специализированного USB устройства, причем перед процедурой обмена данными это устройство необходимо сконфигурировать на определенный режим работы.
суббота, 4 октября 2014 г.
Ошибки .NET Runtime 2.0
В процессе работы, приложение .NET может столкнуться с исключением, которое оно по тем или иным причинам не обрабатывает. В этом случае вдело вмешивается среда CLR. Принимая пропущенное приложением исключение, CLR обрабатывает его и выдаёт пользователю на экран монитора информационное окно .NET Runtime 2.0 Error Reporting с сообщением о возникшей у приложения проблеме. После закрытия окна, CLR завершает работу некорректного приложения. При этом описание и параметры возникшего исключения дублируются CLR в событийном логе Windows в разделе приложений. Возникает естественный вопрос - а можно ли по зафиксированной в логе информации понять в каком месте приложения возникла исключительная ситуация, с тем чтобы внести необходимые исправления? Ответ Да. Посмотрим как это можно сделать.
среда, 3 сентября 2014 г.
InputBox в C#
C# предлагает разработчику удобный класс MessageBox в пространстве имён System.Windows.Forms. Однако ориентирован он исключительно на диалоговые окна вывода различного рода сообщений. Диалоговых окон ввода данных (InputBox) не предусмотрено. Странная асимметрия. А ведь получать данные от пользователя приходится почти в каждом проекте! Конечно, можно создать собственный класс диалогового окна и реализовать весь необходимый функционал. Но гораздо быстрее и проще в условиях ограниченности времени использовать InputBox из сборки Microsoft.VisualBasic.dll. Подключив сборку к проекту, можно написать в тексте программы
var s = Interaction.InputBox("Text", "Caption", "Value", posX, posY);
Первые три параметра имеют формат строки. Последние два в формате целого числа управляют расположением окошка на экране монитора. Это очень важные параметры, так как InputBox не предлагает никаких средств для привязки его к родительскому окну. Поэтому, чтобы окошко не появлялось на экране где попало используется его позиционирование. Значение введённое пользователем возвращается функцией InputBox в виде строки.
пятница, 27 июня 2014 г.
Работа с zip в C#
Работая в рамках NET Framework 3.5 не нашел понятных и простых в использовании встроенных средств для создания zip архивов. В версии 4.5 такой проблемы нет. Сборка System.IO.Compression содержит класс ZipFile удовлетворяющий меня вполне. Однако в низших версиях указанная сборка содержит только два класса GZipStream и DeflateStream. Есть конечно еще и сборка System.IO.Packaging, но формат генерируемого ею файла zip несколько отличается от стандартного и заточен скорее под XML. Таким образом, встроенных средств работы со стандартными zip файлами в dotNET 3.5 попросту нет. Осознав этот печальный факт я скрипя сердце стал искать сторонние средства. Таких нашлось немало, но я упомяну лишь два из них.
понедельник, 2 июня 2014 г.
Пакет R
Скромная буква R английского алфавита открылась передо мной совершенно неожиданной гранью. За казалось бы рядовой буквой скрывается мощнейший пакет по обработке, анализу и визуализации данных, причем вся эта мощь в рамках GNU. Это ли не радость! Кому как, но я определенно испытываю некоторое удовольствие от осознания сего факта. Чувство такое, будто среди полчища разнообразных инструментов ты нашел тот, который давно искал. И как раньше я не замечал его? Лирика это прекрасно, но - ближе к инструменту...
Собственно для работы потребуется движок R, существующий под разные платформенные оси, и некоторый IDE слой позволяющий этим мотором управлять. Движок лежит здесь http://www.r-project.org/, IDE здесь http://www.rstudio.com/.
Сначала качаем и устанавливаем движок. Затем IDE. Процесс установки не описываю, так как сие действие прошло без единого сучка и с минимальным количеством усилий. Однозначно, чувствуется класс разработчиков. А как же иначе, если пакетом пользуются очень солидные учебные, научные учреждения, промышленные корпорации и холдинги с высокой долей научного участия. После окончания установки запускаем RStudio. Выполним небольшой примерчик - построим график функции sin(x)/x.
Слева у нас располагается окно консоли в котором будем набирать команды. R является интерпретатором поэтому сначала мы формулируем действие, затем передаем его на исполнение движку. Правая часть предназначена для вывода и разбита горизонталью на две секции.
Первым делом сформируем массив значений абсциссы x в виде дискретной выборки интервала [-10, 10] с шагом 0.1, подав на консоль команду
> x=seq(-10, 10, by=0.1)
После нажатия на клавишу Enter в верхней секции правой части появиться массив с рассчитанными значениями. Далее вычислим в каждой точке массива значение функции
> y=sin(x)/x
Рассчитанные значения ординаты появятся под значениями абсциссы. Осталось только построить график, например по точкам
> plot(x, y)Построенный график смотрим в нижней секции правой части.
P.S. Остальное, как говориться, по вкусу. Хотите большего, посетите ссылкуhttp://r-analytics.blogspot.ru/
пятница, 16 мая 2014 г.
Вызов внешней программы из приложения C#
В практике программирования бывает возникает необходимость вызова из приложения некоторой внешней программы возможно с передачей ей списка аргументов. В C# эта задача решается средствами System.Diagnostics.Process. Приведу небольшой пример, показывающий имеющиеся в распоряжении программиста возможности.
понедельник, 17 февраля 2014 г.
Восстановление пароля в Debian
Вот и случилось событие, с которым рано или поздно может столкнуться пользователь. Я забыл пароль на вход в Debian (Wheezy). Произошло это совершенно незаметно. Как ни напрягал я свою память, какие комбинации не пробовал, ничто не помогало. В общем приключилась печалька. Однако процесс восстановления пароля оказался на удивление тривиальным. Я буду рассматривать подход с применением установленного в систему загрузчика GRUB...
В загрузочном меню GRUB выбираем образ, используемый по умолчанию и нажимаем клавишу с англицкой буквой 'E' (Edit). В появившемся окне находим строку ядра (в которой указан vmlinuz), переходим в ней на ro и заменяем на rw init=/bin/bash. Остальную часть строки удаляем. Нажимаем F10 для загрузки. Система вывалиться в консоль с которой пароль пользователя можно задать командой passwd. Эта команда однако может быть не обнаружена. Если это случилось, консоль выдаст bash: passwd: command not found. Причина в том, что каталог usr размещается на отдельном разделе, который не монтируется автоматически. Сделаем это ручками подав на консоль команду mount /dev/устройство_с_каталогом_usr. Такой синтаксис предписывает mount монтировать в соответствии с файлом fstab. Всё!
Немного больше информации о проблеме можно найти здесь: Сброс пароля root.
понедельник, 11 ноября 2013 г.
Проверка модема в Linux
Есть модем и есть необходимость проверить его работоспособность. Для этого я использую обычный модемный кабель для COM порта. С его помощью подключаю модем к компьютеру, который имеет минимум один последовательный порт RS232. Далее, в операционной системе Debian (Wheezy), проверяю наличие последовательных устройств командой (вывод здесь и далее выделен курсивом)...
пятница, 1 ноября 2013 г.
Настройка SDK для TC65 в Debian
Разработка приложений для TC65 в NetBeans IDE (версия 7.4 на момент написания статьи) требует наличия мобильной платформы Java от Siemens, которая поставляется в составе дистрибутивного CD. Особенностью этой платформы является отсутствие у устройства экрана и клавиатуры, что описывается профилем IMP/IMP-NG в отличие от MIDP.
Средства разработки для TC65 от Siemens ориентированы на операционную систему Windows. Но это не является препятствием для аналогичной разработки в среде Linux, в частности Debian (Wheezy) - дистрибутив который я буду рассматривать.
среда, 30 октября 2013 г.
Установка Oracle JDK 7 в Debian
Несмотря на то, что разработчики Debian оставили в дистрибутиве Wheezy только OpenJDK и начисто вырезали Sun Java, которая не отвечает положениям свободного ПО, был оставлен "костыль" для тех кому традиционная java все же необходима в работе. В частности, например NetBeans IDE 7.4 не хочет "кушать" OpenJDK, а требует сановскую яву. Ну что же, приступим к делу.
пятница, 4 октября 2013 г.
Установка VirtualBox в Debian
Если в Ubuntu установка VirtualBox была доступна так сказать "из коробки", то в Debian 7.0 Wheezy мне пришлось обращаться к оригинальному virtualbox.org. Процесс установки не кажется сложным если разбить его на несколько логических этапов, а именно:
Добавить новый источник в репозиторный файл /etc/apt/sources.list, (перед этим рекомендуется сделать его резервную копию)
cat /etc/apt/sources.list > /etc/apt/sources.list.backup
cat - >> /etc/apt/sources.list
deb http://download.virtualbox.org/virtualbox/debian wheezy contrib
Установить в систему секретный ключ для доступа к новому источнику
wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -0- | apt-key add -
Обновить репозиторий
apt-get update
Инсталлировать пакет virtualbox-4.2
apt-get install virtualbox-4.2
P.S. Форма комманды cat - >> позволяет добавить строку в конец файла без помощи текстового редактора, что весьма удобно и практично. После cat - >> /etc/apt/sources.list и <Enter> система будет ожидать пользовательский ввод, который завершается комбинацией <Enter>+<Ctrl+D>. Подробности процесса установки VirtualBox, исходные файлы и документацию можно найти на сайте www.virtualbox.org.
суббота, 14 сентября 2013 г.
Печать колонок в Spreadsheet Google Docs
Я время от времени использую Spreadsheet Google Docs для подготовки различного рода табличных документов с последующей их распечаткой на принтере. И часто случается так, что при выводе необходимо чтобы строки, содержащие названия колонок составляющих шапку таблицы повторялись на каждой распечатываемой странице. Добиться этого несложно. Достаточно в пункте Вид>Закрепить строки указать нужное количество.
суббота, 7 сентября 2013 г.
Интернет через коммуникатор
В своем нетбуке я выходил в интернет через USB 3G модем от Билайна. Позднее я приобрел коммуникатор со встроенным 3G. Периодически стала возникать потребность перекидывания сим-карточки из одного устройства в другое и однажды я осознал что этот неудобный порядок вещей необходимо изменить.
В качестве устройства доступа к интернету я выбрал коммуникатор и оставил сим-карту там. Канал связи коммуникатора и нетбука был выбран беспроводной по технологии Bluetooth, которую коммуникатор поддерживает, а вот нетбук нет. Для последнего нужен соответствующий адаптер, например такой который был у меня от фирмы Tekram. Итак приступим...
вторник, 20 августа 2013 г.
SIMATIC Selection Tool
Данная утилита предназначена для конфигурирования устройств автоматизации производства Siemens следующих линеек SIMATIC S7, SIMATIC ET 200 и SIMATIC NET.
P.S. Требует JRE. Стартовый файл приложения имеет расширение JNLP и загружается посредством Java Web Start.
P.S. Ссылка на конфигуратор
понедельник, 12 августа 2013 г.
Autodesk Design Review
Ускорить цикл проверки проектов на настольном компьютере вам поможет Autodesk® Design Review – бесплатная программа для просмотра, нанесения электронных пометок, печати и отслеживания изменений в 2D и 3D файлах проектов, которые подготовлены с использованием программного обеспечения Autodesk, в цифровом формате. Для ее работы не требуется наличия исходных САПР. Вы получите возможность работать с разными форматами файлов, в том числе DWF™ и DWFx, DWG™ и DXF™ (при условии установки бесплатной программы DWG TrueView™), Adobe PDF, а также такими растровыми форматами, как .bmp, .jpg, .gif, .pcx, .pct, .png, .rlc, .tga, .tif, .mil, .cal и т.п.
P.S. Ценная плюшка... Скачивается с ресурса производителя без регистрации в виде автономного установочного файла. Весит 184 метра вместе с DWG TrueView и надстройкой Design Review Browser.
P.S. Ссылка на ресурс
вторник, 23 июля 2013 г.
Монтирование UFS2 в Ubuntu
Есть диск с разделом UFS2. Потребовалось мне как-то взять оттуда данные и перенести их на рабочий компьютер под управлением Ubuntu. Подключаю диск, запускаю GParted, выбираю нужное имя устройства и вижу, что утилита пишет в разделе 'неизвестный тип файловой системы'. GParted не знает UFS? В свойствах окна 'Вид|Поддержка файловых систем' строка ufs имеется, а вот поле 'Требуемое ПО' пустое! Печально. Что же, попробую смонтировать вручную. Предварительно устанавливаю утилиту ufsutils через Центр приложений Ubuntu. Далее в терминале даю на исполнение команду
sudo mount -r -t ufs -o ufstype=ufs2, /dev/sdc1 /media/bsdи снимаю данные...
P.S. Более подробную информацию о типах файловых систем поддерживаемых командой монтирования можно почерпнуть из руководства man mount в разделе 'Mount options for ufs'. Для удобства просмотра руководства man выведите его в текстовый файл командой man mount|col -b>man-mount.txt
четверг, 11 июля 2013 г.
Подключение сетевого ресурса Samba локально
Для того, чтобы иметь возможность работать с общим ресурсом Samba сервера как с локальным файловым ресурсом, достаточно выполнить следующую команду:
mount -t smbfs //xxx.xxx.xxx.xxx/Дистрибутивы /media/dist/
Для успешного выполнения команды необходимо установить пакет smbfs, обеспечить доступность SMB/CIFS сервера по IP, и создать точку монтирования. В моем случае я не указываю параметры доступа к ресурсу так как он не требует авторизации. При запросе пароля нажмите Enter. В противном случае используйте параметры -o username=, password=. Подробнее в man mount.
понедельник, 8 июля 2013 г.
Установка доп. x64 драйвера для HP LaserJet 1319f MFP
Имеем компьютер под управлением x86 Windows 7 (далее ПКx86) и подключенный к его USB порту МФУ HP LaserJet 1319f MFP. Устройство настроено и функционирует. В том-же сегменте сети находится другой компьютер под управлением x64 Windows 7 (далее ПКx64). Требуется организовать печать с этого компьютера на удаленный МФУ.
Сначала необходимо расшарить на ПКx86 целевой принтер. Для этого идем в свойства выбранного принтера и открываем общий доступ по сети на вкладке Доступ. Там же в группе Драйвера нажимаем кнопку Дополнительные драйверы... и в открывшемся списке установленных отмечаем галочкой позицию x64. Подтверждение своих намерений нажатием кнопки ОК запустит установку в процессе которой система запросит месторасположение устанавливаемого драйвера (файл с расширением .inf).
Драйвера для МФУ HP LaserJet 1319f MFP распространяются производителем через фирменный сайт в виде самораспаковывающегося архива (файл exe). Чтобы не искать куда архив был развернут по умолчанию, укажем ему место распаковки в ручную через контекстное меню файла.
Теперь осталось указать установщику inf файл драйвера и дождаться завершения процесса установки. На ПКx64 установка драйвера удаленного принтера осуществляется через пункт Подключить... его контекстного меню в общедоступных сетевых ресурсах ПКx86.
P.S. Ссылка на драйвера
P.S. Ссылка на драйвера
суббота, 6 июля 2013 г.
Виртуальная машина недоступна
После очередного обновления Ubuntu 12.04 неожиданно перестала запускаться виртуальная машина Windows 7. В окне VirtialBox наблюдалось следующее сообщение:
Premature end of data in tag VirtualBox line 8.
Location: '/home/marh/VirtualBox VMs/Win7x86/Win7x86.vbox', line 191 (8), column 66.
/build/buildd/virtualbox-4.1.12-dfsg/src/VBox/Main/src-server/MachineImpl.cpp[707] (nsresult Machine::registeredInit()).
Код ошибки: NS_ERROR_FAILURE (0x80004005)
Компонент: VirtualBox
Интерфейс: IVirtualBox {c28be65f-1a8f-43b4-81f1-eb60cb516e66}
Все, что я смог понять из текста сообщения, это наличие проблемы в файле .vbox. Открыв его в текстовом редакторе gedit и перейдя курсором в указанную позицию я оказался точно в конце файла. Было ясно видно, что файл оборван и отсутствует какая-то важная заключительная его часть. Формат файла соответствует синтаксису XML и легко читается визуально. Пробежав глазами по тегам я убедился что этот файл описывает конфигурацию виртуальной машины и никак не влияет на файл .vdi с данными виртуальной машины. Это было некоторое облегчение.
Резервной копии работоспособного файла .vbox не оказалось, поэтому пришлось создавать новую виртуальную машину, и в качестве жесткого диска указывать существующий файл .vdi. В результате удалось полноценно загрузиться.
Разрулив последствия, я вспомнил о сообщении которое появлялось на экране монитора в процессе обновления Ubuntu и моем игнорировании этого факта. Сообщение касалось недостаточности свободного места, что и послужило как мне кажется причиной обрыва файла. Но вот путь как это произошло мне не понятен. VirtualBox был заблаговременно выгружен из памяти и никак не мог вступить в конфликт с подсистемой обновления Ubuntu. Отсюда следует вывод, что надо делать резервные копии файла конфигурации виртуальной машины (.vbox).
Подписаться на:
Сообщения (Atom)

