LINUX.ORG.RU

Сообщения decadent

 

Ноутбук в качестве бездискового терминала

Здравствуйте.

Есть у меня домашний «мини-сервер», и появился старый HP Pavilion, у которого, судя по симптомам, проблемы с IDE-контроллером. Контроллер я, конечно, заменить не смогу, но очень уж понравился мне этот ноут (прежде всего, матовый экран и удобная клавиатура; ну и он весьма компактный, по сравнению с современными ноутами). Задумал я использовать его в качестве бездискового терминала к «мини-серверу». Посоветуйте, пожалуйста, откуда начинать копать.

decadent
()

МЭК-104+MySQL

Здравствуйте.

Вот странного хочу. Есть комп с базой MySQL, в которой хранятся результаты измерений. Есть другой комп со SCADA, которая работает по протоколу МЭК-104. Нужно инфу из базы сделать доступной для SCADA. Что общественность может мне посоветовать?

Нагуглил Net::IEC104 , но пока слабо себе представляю, как это все организовать. Предположение пока такое:

  • создаю утилиту, которая будет выдавать на выбранный порт, например, раз в секунду, результаты последнего измерения;
  • циклически запускаю ее раз в N миллисекунд.

Правильно ли я думаю?

 ,

decadent
()

GSM усилитель

Здравствуйте.

Есть одно место (квартира), где весьма низкий уровень GSM-сигнала. При разговоре по телефону часто речь неразборчива, вплоть до пропадания. При этом у одного окна вроде бы всё нормально. Дом кирпичный с панельными перекрытиями.

Операторы сотовой связи предлагают «фемтосоты», но цена очень кусается.

Нашел такую штуку:

http://www.aliexpress.com/item/Freeshipping-cell-phone-signal-booster-GSM-900...

Для Ъ — репитер GSM сигнала. Поможет ли он мне в решении проблемы? И — насколько безопасно излучение от него?

Линукс тут при том, что в той квартире стоит комп с линуксом :-)

decadent
()

Графики на странице

Здравствуйте.

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

decadent
()

Fedora 18: apache не виден извне

Здравствуйте.

Использовал я убунту и горя не знал. Сразу после установки httpd все прекрасно работало, странички были видны и с локалхоста, и из сети. Но поставил я федору 18...

Если я на локалхосте захожу на http://localhost/index.html — страничка видна.

Если захожу с машины в локальной сети на http://ip.address/index.html — «Время ожидания от сервера истекло». В логах (access_log и error_log) ничего, в /var/log/messages тоже. Куда смотреть, чтобы найти причину такого поведения? Система свежеустановленная, никаких настроек не крутил.

 

decadent
()

Хотелки по автоматизации развертывания

Не знаю, куда писать, напишу, пожалуй, сюда.

Итак, суть такова. Есть некая SCADA-подобная система: посты, датчики, каналы связи, все это заведено на единый компьютер, за которым сидит тётя-диспетчер (или дедушка). Сейчас всё это развертывается так: еду я и всё настраиваю сам, либо едет электрик, звонит мне по телефону, и я ему рассказываю, как всё настраивается. Естественно, меня такое положение дел не устраивает, хочу автоматизировать. Что вижу (пока своим чайницким взглядом)?

  • Собирается некий мини-дистрибутив линукса, в котором есть только то, что нужно, и выброшено то, что не нужно.
  • Записывается на флешку, флешка отдается электрику.
  • Электрик вставляет флешку, включает комп в розетку, линукс минут 5 тихо ставится, потом появляется веб-морда с выпадающими списками и галочками: столько-то постов, на таких постах такие датчики, по таким каналам связи. Электрик ставит галочки, нажимает Большую Зеленую Кнопку, ему говорят: «А теперь можете выключить монитор и ходить в браузере на вот такую страничку, там вы все нужное увидите».

Уфф, многабукав написал. Теперь вопрос. Насколько реально такое провернуть? В какую сторону смотреть? Что почитать полезного? Или, может быть, коллективный разум подскажет какое-нибудь более правильное решение?

decadent
()

Поиск среди объектов canvas по тэгам

Здравствуйте.

Есть объект canvas, на него добавляются объекты image со своими тэгами

 
[list tag1 tag2]

один тэг при этом общий для всех, второй уникален для каждого объекта. Дык вопрос: прибиндил я, например, нажатие кнопки ко всем объектам с тэгом tag1, который для всех общий; как мне узнать для этого объекта tag2?

 , ,

decadent
()

perl, GUI и графики

Всем добрый день.

Для Tcl/Tk имеется прекрасный модуль BLT, в котором есть всё, что мне нужно от графиков: масштабирование, отображение дат по оси абсцисс, подсветка линий, ну и просто удобное встраивание в GUI приложение (в том числе и под виндами). А что лучше использовать для этих целей на Perl? Желательно (хотя и не обязательно) у моей программы должен быть GUI (хотя можно и веб-интерфейс, но GUI как-то привычнее заказчикам), в составе которого должно быть десятка два масштабируемых мышой и периодически обновляемых графиков. Думаю использовать для него Perl/Tk. Но — в сети встречал информацию о том, что использование BLT при этом чревато трудностями. Возможно, есть более правильный путь?

 blt, ,

decadent
()

Хитрый SQL-запрос

Добрый день.

Как всегда, хочется странного. Есть таблица, содержащая поля: дата_сеанса, номер_телефона, полученные_данные, индекс. Номеров телефона уникальных 20 штук, каждый из них может звонить в случайное время. Что хочу? Хочу сделать VIEW, в котором будут храниться только последние по времени сеансы для каждого номера. Как такое можно сделать? Для получения самого последнего сеанса я делал так:

 
CREATE VIEW `last_data` AS 
select 
`date` AS `date`,
`phone` AS `phone`,
`data` AS `data`
from `monitoringtable`
order by `index` desc limit 1;

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

decadent
()

Ajax и Leaflet (осторожно, быдлокод)

Вот не понимаю я, хоть тресни.

С помощью leaflet нанес на карту маркеры, координаты для которых получил из базы данных:

 
        var markerLocation = new L.LatLng(tower1.latitude, tower1.longitude);
        marker[tower1.index] = new L.Marker(markerLocation);
        map.addLayer(marker[tower1.index]);

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

 
        marker[tower1.index].bindPopup("");
        marker[tower1.index].click = function () {
                get_tower_data(tower1.index);
        };
 
function get_tower_data(tower_index) {

        $.ajax({
                url: 'get_tower_data.php',
                data: {my_index : tower_index},
                dataType: 'json',
                success: function (hash_table, tower_index) {
                                var text = ""
                                var num = process_tower_data(hash_table);
                                text = "Это опора " + num;
                                console.log(text);
                        },
                cache: false,
                ifModified: true
        });
}

В итоге по клику все равно выводится пустой попап. Судя то тому, что console.log не вызывается (смотрю Firebug'ом), клик не обрабатывается вообще. Что я делаю не так?

 , ,

decadent
()

Обновить модуль perl в debian squeeze

Приветствую!

Имеется debian squeeze вот такой:


 # uname -a
 Linux frost 2.6.32-5-amd64 #1 SMP Sun May 6 05:12:07 UTC 2012 x86_64
GNU/Linux

Хочу установить с cpan модуль Timer::Simple. И вот что получаю в ответ:

  CPAN.pm: Going to build R/RW/RWSTAUNER/Timer-Simple-1.004.tar.gz

 Module::Build version 0.3601 required--this is only version 0.340201 at
Build.PL line 5.
 BEGIN failed--compilation aborted at Build.PL line 5.
 Warning: No success on command[/usr/bin/perl Build.PL --installdirs site]
 Warning (usually harmless): 'YAML' not installed, will not store
persistent state
   RWSTAUNER/Timer-Simple-1.004.tar.gz
   /usr/bin/perl Build.PL --installdirs site -- NOT OK
 Running Build test
   Make had some problems, won't test
 Running Build install
   Make had some problems, won't install
 Could not read '/root/.cpan/build/Timer-Simple-1.004-NwV3Fv/META.yml'.
Falling back to other
 methods to determine prerequisites
 Failed during this command:

RWSTAUNER/Timer-Simple-1.004.tar.gz          :
writemakefile NO '/usr/bin/perl Build.PL --installdirs site' returned
status 2304

Попытка обновить Module::Build не удается — вылазит куча зависимостей, для которых 'make = >No'. Как правильно поступать в таком случае (кроме сноса Дебиана)?

decadent
()

Снова mgetty

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

AT+CRC=1
AT+CLIP=1 

Информация о звонящем приходит — но mgetty отказывается снимать трубку. Она, видите ли, ждет RING, а приходит +CRING:.... (там дальше инфа о звонящем). Если же указанных команд нет — приходит RING и mgetty берет трубку.

Посоветуйте, пожалуйста, как это побороть?

decadent
()

Знатокам модемной связи

Здравствуйте.

Есть промышленный GSM-модем (подключенный к последовательному порту), есть сервер на Debian. Нужно сделать следующее: принять входящий звонок, получить инфу от удаленного модема, сохранить ее в текстовый файл, сказать удаленному модему, что все ОК, и положить трубку. Можно ли все это сделать с помощью mgetty? Особенно интересует сохранение инфы в файл.

decadent
()

Свой front-end для gnuplot

Всем привет.

Есть куча текстовых файлов с результатами измерений. Структура очень проста: каждая строка — величина показаний датчиков для одного отсчета времени. Для простой визуализации этих файлов написана программа на Tcl/Tk+BLT — рисуется график, проводятся элементарные расчеты, график можно скопировать в буфер, отправить на печать и тд. Все отлично работало. Но.

Теперь заказчик сказал: «Хочу строить семейство графиков, да еще и в 3D, да чтоб мышкой вращать можно было, и чтоб и под виндами тоже.» Поскольку как строить с использованием BLT графики функций 2 переменных, я не нашел — решил отдать эту работу православному гнуплоту и написать для этого сабж. И тут пошли вопросы.

1. Гнуплот отрисовывает график в отдельном окне. Можно ли как-нибудь заставить его отображать график в окошке фронтэнда? Потому как заказчик с компами на Вы и от обилия окошек может потеряться.

2. Как правильно общаться с гнуплотом из Tcl/Tk? Допустим, юзер открыл окно выбора файлов с результатами, выбрал нужные файлы — и затем я должен говорить exec gnuplot с заранее подготовленным командным файлом? Или я неправ и можно сделать по-другому?

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

decadent
()

Внешний жесткий диск для роутера

Здравствуй, All.

Почти созрел для смены прошивки на любимом DIR-320 с длинковской на альтернативную. Из дополнительных вкусностей пока хочу только торрент-клиент (для скачки/раздачи образов дистрибутивов линукса, конечно) и ftp-сервер, чтобы эти самые дистрибутивы удобно скачивать на стационарный комп (в том числе и из винды — мало ли, кто с ноутом своим придет). Таким образом, понадобился внешний хард, а поскольку я раньше никогда их не покупал, прошу консультации у сообщества. Пока нравится вот этот (Внешний HDD WD 1TB 7200rpm 16MB My Book Essential Edition [WDH1U10000E] 3.5" USB 2.0) — но вопрос надежности беспокоит, не хочется через год его выбрасывать.

И да, какую прошивку посоветуете? Сам собрать точно не смогу, поэтому приветствуются готовые решения.

decadent
()

[Tcl/Tk] Правильное event-oriented программирование

Здравствуйте.

Уже не первый раз задаю подобные вопросы, почти постиг дзэн Tcl/Tk, но до полного просветления осталось еще несколько шагов. Суть моей задачи приведена вот тут, обновленный каркас приложения (с учетом трассировки переменных) приведен вот тут Все бы хорошо, но есть одна неприятная особенность — если я хочу из процедуры сменить значение переменной $status, то у меня не выходит это сделать. Я подозреваю, что переменная вначале меняется по моему запросу, но затем она снова переустанавливается в старое значение командой

set status "Читать регистры"

в теле обработчика событий для последовательного порта. Поэтому приходится вводить костыли типа глобальной переменной write_request, проверять ее на равенство единице, и только если «запрос на запись» есть — переводить программу в состояние «Запись регистра состояния». Поэтому вопрос — как правильно это реализовать, не прибегая к подобным костылям?

decadent
()

[Tcl/Tk] Печать отчетов

Доброго времени суток!

Специалисты по Tcl/Tk, нужно ваше мнение.

Есть такая задача — необходимо выводить на принтер (локальный) результаты измерений. Результаты представляют собой график (используется BLT) и набор параметров, исходя из которых делается заключение о годности испытываемого изделия. То есть, я должен сформировать некий отчет и вывести его на принтер. И здесь возникают вопросы.

  • Просто распечатать график — не проблема, print1 из библиотеки BLT работает прекрасно. Но — график нужно отмасштабировать (чтобы поместился на четверть листа А4, а лучше меньше), а также добавить текст (те самые измеренные параметры).
  • Попробовал штатную функцию из BLT, создающую eps. Однако получил проблему с кодировками — на месте кириллицы были кракозябры.
  • Ну и весь процесс создания-распечатки отчета желательно проделать с минимумом внешних утилит и максимально скрыть от юзера, который по окончании испытания должен только нажать кнопку «Распечатать».

По последней причине, к сожалению, отпадает TeX — хотя это был бы отличный вариант. Возможно, подойдет сохранение графика в графическом формате (например, jpg — на артефакты пофиг, принтер черно-белый) и генерирование какого-нибудь html — этот способ я еще не пробовал.

Заранее благодарю за советы.

decadent
()

[Tcl][Events] Отследить значение переменной

Добрый день, коллеги. Это снова я с Tcl и последовательным портом. Суть такова — имеется устройство, с которым я общаюсь через последовательный порт. Общение идет в режиме «запрос-ответ», в основном ответом являются показания датчиков, которые я расшифровываю и кладу в глобальные переменные. Иногда подается запрос на запись в регистр. Работа реализована через файлэвенты, каркас приведен вот тут . Все прекрасно работает, но есть один нюанс. Мне нужно отслеживать значения некоторых переменных и по достижении ими определенных величин запускать соответствующие функции. Например, есть функции stop_motor и start_motor. Я запускаю двигатель, происходит постоянное чтение показаний датчика усилия, и если переменная force = 100 — я должен вызвать stop_motor. Делал так:

start_motor

while {1} {
    if {$force == 100} {stop_motor; break}
} 

Однако при этом GUI замерзает, а мне это не нужно.

Вроде бы мою задачу можно решить с помощью команды trace — но я пока не въехал в тонкости ее использования. Посоветуйте, пожалуйста, как мне лучше поступить. Заранее спасибо.

 ,

decadent
()

[Tcl/Tk][Serial][Нипонял] Еще вопрос по fileevent

Добрый день, коллеги.

Имеется такая проблема. Работаю с последовательным портом из Tcl/Tk. Старый способ с постоянным поллингом порта не нравится, осваиваю файлэвенты. Быдлокод Пример работы здесь:

http://pastebin.com/aH6XZR8m

Все нормально работает, но возникают нештатные ситуации. Например, если модем только что включен, на первые несколько команд он отвечает ерундой или не отвечает совсем. Первый вариант обрабатывается, а вот со вторым проблема — ведь в таком случае порт не становится readable. Как мне идеологически правильно разрешить эту ситуацию? На VB под виндами заводили таймер, который включался сразу после подачи команды в порт, и если через определенное время ответа не было — таймер срабатывал, и в нем уже обрабатывалась ошибка. Как сделать аналогично в Tcl/Tk, и стоит ли вообще так делать — я не нашел. Посоветуйте, пожалуйста, как мне правильно поступить.

 

decadent
()

[Tcl/Tk] Пользовательские кнопки

Приветствую всех.

Есть необходимость в создании кнопок нестандартного размера — они должны быть значительно больше, чем обычные, чтобы с ними было удобно работать через сенсорную панель. Я пытался для этих целей использовать TkZinc (рисовал прямоугольники, потом заставлял их реагировать на события). В принципе, заработало, но мне такой подход не нравится двумя моментами: во-первых, сама процедура создания элемента муторная, и во-вторых, я так и не победил проблему с кириллицей. Посоветуйте, пожалуйста, есть ли возможность более-менее стандартным способом увеличить размер кнопок?

Кстати, кнопки должны быть в виде матрицы, соответственно, лучше всего использовать grid — но там нет свойства expand, а его имитация с помощью rowconfigure у меня не получается.

decadent
()

RSS подписка на новые темы