LINUX.ORG.RU

Сообщения upcFrost

 

Выбор элемента структуры по имени

Форум — Development

Сижу пишу на плюсах прогу, решающую газодинамику. Вывод делаю в xml-образные файлы для ParaView. Получается как-то так:

есть пачка переменных (пусть P, V, E)

открываю stringstream, пихаю в него открывающий тег, пробегаю по сетке, закрывающий тег. И так 10 раз. Потом поток уходит в файл.

Собственно, вопрос - это можно сделать более читабельным/компактным? 10 циклов отличаются 1 значением - это имя элемента структуры. Вроде в некоторых языках можно просто передать имя элемента в параметрах функции. Для плюсов такого не видел вроде (в бусте вроде было, но ну его нафиг ради одной фичи).

Понимаю, что в целом можно пихать в разные потоки, но количество переменных на вывод тоже изначально хз какое (сколько нужно - столько будет)

upd: В догонку - какой наиболее быстрый способ записи на хард если каждый цикл выплевывается файл ~ полметра размером?

 ,

upcFrost
()

Asterisk, sip-транк и CallerID

Форум — Admin

Есть сеть двойной звездой из пачки АТС, центры звезды медленно, но верно начинают сползать со старых АТС на астериски. Проблема в передаче CallerID вызываемого абонента если вызов идет через sip-транк.

На одной атс все норм, в момент звонка (Ringing) в идущий к вызывающему sip header помещается P-Asserted-Identity с инфой по вызываемому и имя определяется нормально. (A->B, B->A) Через транк ситуация другая - вне зависимости от направления (в астер - с астера) передается только имя вызывающего вызываемому (A -> B). Вызывающий аппарат P-Asserted-Identity не получает и так и оставляет на экране номер, что не айс.

P-Asserted-Identity присваивается внутри функции Dial(), сырцы править не айс ибо лучше все-таки юзать сборку (в данный момент AsteriskNow).

Собственно вопрос в том, как это исправить если кто сталкивался.

АТС Asterisk 1.8.11 + FreePBX 2.11.0.0beta2.2 <-> Aastra MX-One

Телефоны Aastra 67xxi

upd.: Нашел со стороны астериска - надо было прописать что-нибудь в Outbound Route CallerID, тогда для Intra-company он посылает внутренний CallerID и принимает его в ответ. C MX-One тупняк, не принимает

Нашел. Бугога! :) Для передачи MX-One -> Asterisk надо было... внимание... включить FollowMe! Причем на самого себя. При этом в контексте from-trunk идет определение управляющего контекста ext-local, а не exten-vm, а также включается agi-скрипт, который собственно и определяет CallerID.

 , ,

upcFrost
()

Дистр/DE для планшета

Форум — Mobile

Имеется планшет на атоме. Думаю, что бы на него такое поставить чтоб оно нормально работало. Сейчас все больше смотрю в сторону Xfce - гнум3 тормозной дальше некуда, и кстати глючит (по крайней мере пакеты из Mint, сам собирать не очень хочу, придется distcc поднимать).

Из того, что уже смотрел:

  • xfce - быстрая и удобная штука. Главное - можно настроить (изначально кнопки все-таки мелковаты для планшета). Единственный косяк xfce - почему-то не работаю заголовки окон. Т.е. если добрые разрабы кнопку «Выход» в гуе программы не предусмотрели - то только подцеплять USB-клаву и Alt+f4 (благо в xfce это работает). И нет родной экранной клавы, да.
  • гнум3 - аццкий глюкавый тормоз. единственный плюс - есть экранная клавиатура (тож глючит кстати). Меню под планшет с одним маленьким «но» - прокрутка этого меню баром, который слегка «не под планшет» (жирнее его раза в 3 надо делать). А вообще - тормозит все, что можно.
  • гнум2 - работает, и вполне неплохо. По скорости чуть медленнее xfce (хотя можт показалось). Заголовки окон работают. Фигня, опять же, в пакетах. Что-то они где-то в минте не так сделали походу, в итоге раб.стол на тач почти не откликается.
  • MATE - недовторогнум. Фиг знает, но это тормознее гнума2, и из него зачем-то попытались слепить 4 кеды.
  • Cinnamon - недотретьегнум. Клава есть (глючит). Тормозит и виснет.
  • Matchbox - как был говном, так и остался. Хотя нет, раньше все-таки лучше был имхо.

В итоге думаю, что проще всего взять Xfce и настроить его под тач (только с окнами фигня какая-то). Либо взять, скажем, OpenBox и что-нибудь типа CairoDock. Короче, посоветуйте что сделать можно. Можт вообще другой дистр какой (сам на пакетных не сижу уже года 4, хз че в них происходит)

p.s. кто-нибудь знает нормальную экранную клаву на линукс, от вида, функций и стабильности работы которой не хочется долго кричать матом?

p.p.s. Из Talks потерли. Надеюсь mobile считается техническим разделом?

 ,

upcFrost
()

IP телефон как микрофон

Форум — Talks

Пришла в голову странная идея - есть поликомовский конференцтелефон. Как конференцтелефон - дерьмо полное (гуй нужен для конфы, а xml куцый что ппц), но динамик и микрофон у него зачетные.

Есть всякая фигня вроде USBoE, но это слега не то. Вот сижу и думаю - можно ли этот телефон заюзать как микрофон для компа (допустим виртуальный USB или напрямую как микрофон по Ethernet или еще как) чтоб использовать с тем же LinPhone или 3CX или (тьфу)Flash?

 ,

upcFrost
()

Аналог fsockopen + fwrite в Ruby

Форум — Development

Сижу пишу xml-ui к ip-телефону. В доках примеры идут на пыхе, но т.к. это все привязывается к проекту на RoR - пишу на нем же. Client->Server идет без проблем, фигня начинается когда когда идет push с сервера.

На пыхе (не считая проверки) это все выполняется через

$a = fsockopen($ip,$port);
fputs($a, $xml);
flush();
fclose($a);

В RoR вроде это должно идти так

s = TCPSocket.new(host,port)
s.send(@xml,0)
s.close

Но похоже я где-то что-то не так понял, короче эффект нулевой. Кто-нибудь может подсказать?

p.s. Натыкался на варианты типа em-websocket - что-то не очень хочется держать такой ппц ради того, чтоб номер кнопки отправить на телефон, тогда уж легче вызвать в консоли пых ради такого дела

 , ,

upcFrost
()

Оригинальная капча

Форум — Talks

Регистрируюсь на форуме PBX in a Flash. Последний вопрос, стандартно, что-то типа капчи.

Verification: What number in 246893 rhymes with sublime?

На минуту подвис

upcFrost
()

«легкая установка» убунты

Форум — Talks

Убунта по рассказам «легко и удобно ставится». Ога, щаз. Вот такая кулстори получилась

Привезли нам новый мощный интеловский сервак. Ставлю бубунту сервер 10.04 (завязка на софте, причем именно на эту версию).

Попытка 1: Врубил, гудит как боинг. Настроил raid, впихнул диск. Установщик заработал. «Нет установочного cd-привода». Как нет? А откуда ты, родной, загрузился? О_о Порылся в биосе, нашел что привод подцеплен к Raid-контроллеру. Дров нет. Контроллер поддерживает режим AHCI. Ок, ребут

Попытка 2: Ребут, установщик врубился. Все ок... «Нет сетевых интерфейсов». Че? Их 4 штуки же. О_О Роюсь в гугле, в доках, в голове. Нашел дрова, поднял виртуалку, скомпилил, подсунул установщику. Ок. Идем дальше

Попытка 3: Сетевухи есть. Но не качают. ISA, чтоб ее. Качаю cntlm, пытаюсь поставить. «dpkg: command not found». Фак. Распаковал, поставил руками. Все, качает, отлично

Попытка 4: Разметка дисков. «Нет хардов». Он издевается походу. Харды подключены к другому raid-контроллеру. Интел дает бинарные дрова под сузю, шапку и венду. Другие режимы контроллер не держит. Сижу курю гугель.

upd.: Попытка 5: Дрова от шапки не хотят вставать вообще. На соседний такой же сервак спокойно встала центОсь 5 (AsteriskNow). Проверил - убунта 12.10 тож не видит харды. Буду ставить в chroot под центось 6 (чтоб опять некрофилией не заниматься)

 ,

upcFrost
()

свой gsm с бл/шл

Форум — Admin

Получил пищу для раздумий в одной из соседних тем про GSM-шлюз.

У нас развернуто несколько астерисков. Есть проект OpenBTS, позволяющий на базе астериска сделать свою gsm-сеть (точнее gsm-станцию использовать как клиент к внутреннему sip). Симками с программаторами и базовыми станциями торгуют китайцы.

Вопрос такой: если это развернуть в рамках предприятия (условно говоря это все чисто внутри филиалов, чтоб по территории плюс до курилки и магазина добило) - какие будут законодательные подводные камни? Сеть внутренняя, «услуги связи» не предоставляются левым людям

Перемещено tazhate из talks

 ,

upcFrost
()

Codec_id в ffmpeg

Форум — Development

Пытаюсь написать простой видеоплеер на основе Qt+FFMpeg.

if(avformat_open_input(&pFormatCtx, filename.toStdString().c_str(), NULL, NULL)!=0)
       return false; // Couldn't open file

   if(avformat_find_stream_info(pFormatCtx, NULL)<0)
       return false; // Couldn't find stream information

   av_dump_format(pFormatCtx, 0, filename.toStdString().c_str(), false);

   videoStream=-1;
   ffmpeg::AVMediaType a = ffmpeg::AVMEDIA_TYPE_VIDEO;
   for(unsigned i=0; i<pFormatCtx->nb_streams; i++)
       if(pFormatCtx->streams[i]->codec->codec_type==ffmpeg::AVMEDIA_TYPE_VIDEO)
       {
           videoStream=i;
           break;
       }
   if(videoStream==-1)
       return false; // Didn't find a video stream

   pCodecCtx=pFormatCtx->streams[videoStream]->codec;

   pCodec=avcodec_find_decoder(pCodecCtx->codec_id);
   if(pCodec==NULL)
       return false;

На последних строках оно валится, т.к. в codec_id вместо понятных ffmpeg обозначений (типа AV_CODEC_ID_MPEG2VIDEO) возвращает просто число (2147483648 например)

Кто-нибудь сталкивался?

 ,

upcFrost
()

Подмена адреса

Форум — Admin

Проблема следующая:

Есть машина (назовем ее 192.168.0.5), на нее со свича (192.168.0.1) поступает поток с двух серверов (192.168.0.10 и 192.168.0.11). К свичу также подключена еще одна машина (192.168.0.2), на которую зеркалируется с порта весь трафик, идущий на машину 192.168.0.5.

Трафик идет таким образом, что часть пакетов идет с сервера 10, а другая часть - с сервера 11.

Нужно сделать так, чтобы на машине 2 был поднят виртуальный интерфейс, на который с физического зеркалируются данные, но с некоторой подменой: вместо адресов 10 и 11 у пакетов должно стоять что-то одно (неважно что, хоть 1.2.3.4), т.е. на вид пакеты должны идти с одного адреса до машины 192.168.0.5

Вопрос, собственно: а) как поднять виртуальный интерфейс и б) как сделать такую подмену.

 ,

upcFrost
()

Синхронизация базы данных

Форум — Development

Есть приложение на ведроиде (sqlite) и база (мускул) на сервере. Приложение должно синхронизироваться с сервером и забирать с него новые/измененные записи в базе.

На StackOverflow народ советовал в таком случае ввести в базу поле «version» и тупо скачивать строки с version выше, чем на девайсе. Но суть слегка не в этом.

На сервере софт, отвечающий за базу, висит на питоне. Чтоб не плодить сущности - server-side для синхронизации будет на нем же.

Вопрос в следующем: что лучше (не правильнее, а быстрее/проще/ниже нагрузка на девайс) - socket, после чего разгребать данные уже на девайсе, или генерить текстовый ответ (подключение как к обычной странице + параметр в GET), сразу содержащий все нужные команды построчно? В базе в каждой записи есть блоб около 5-6 кило весом.

 ,

upcFrost
()

Различные компиляторы

Форум — Talks

Вопрос по большей части к гентушникам: вы в своей системе используете только один компилятор (ну, тот же GCC например), или используете смесь для различных пакетов?

Сам на нетбуке держу GCC + ICC. Отлично работает после подбора флагов

 ,

upcFrost
()

Посоветуйте панель для хостинга

Форум — Talks

Решил на домашнем серваке навести порядок. Раньше на нем хостилось 3 сайта (вернее VirtualHost'а). Сейчас будет больше. Сайты различались портами (8080,8081,8082), конфиг писал руками, более чем для 3-4 сайтов уже будет не очень удобно.

Поставил CentOS, сверху Webmin+Virtualmin. У последнего обнаружил доменофилию. Как я понял оно пихает все на один ip:port, после чего смотрит с какого домена обратились и подсовывает нужный сайт.

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

Кто-нибудь знает панель, которая имеет сходный с Virtualmin функционал, но нормально работает с портами, а не только с доменами?

Или, если у меня просто руки из задницы, скажите как настроить Virtualmin подобным образом (и, да, оно за роутером, прямого подключения нету)

 ,

upcFrost
()

Virtualmin с различными портами

Форум — Admin

Что было раньше:

  • сайт А (svn-реп) 123.45.67.89:8080
  • сайт Б (обычный сайт) 123.45.67.89:8081
  • сайт В (прокинут в I2P) 123.45.67.89:8082

    и т.д.

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

Черт дернул поставить Webmin + Virtualmin. кто-нибудь знает как сделать в нем подобное? он как я понял очень любит завязываться на домены, а на обращение по IP смотрит косо

 ,

upcFrost
()

Мобильник и батарейка

Форум — Talks

Купил новый тел. В тех.характеристиках гордо написано «Работа в режиме ожидания 300 ч.»

Специально сразу после покупки оставил его до полной разрядки включенным (было чуть большее 50% заряда). Никто не звонил, в игры не играл, wifi отключен. Сел за 20 часов. Может я чего не понимаю, но 20*2 будет далеко не 300. Или что там у них теперь «режим ожидания»? Типа когда телефон ожидает, что его вообще включат?

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

 ,

upcFrost
()

GSM репитер

Форум — Talks

Кто-нибудь знает место в Москве, где можно достать хороший репитер за адекватные деньги? В сети вижу только по 10 килорублей, при ценах на ebay/амазоне в пределах 70-140 баксов (и это за комплект, а не только за саму коробку).

 ,

upcFrost
()

Торжество логики и здравого смысла

Форум — Talks

 

upcFrost
()

MS и Германия

Форум — Talks

http://www.retailstudio.org/news/17270.htm

Немцы что, правда запретили у себя продавать вынь7 и Xbox?

 

upcFrost
()

Гонки по тоннелю

Форум — Games

Точно помню, что под линух была игра типа Boost для ведра и яблока, причем не очень старая (ну, после 2001 года сделана). Кто-нибудь помнить название?

 

upcFrost
()

Опять QGraphicsView

Форум — Development

С момента предыдущего моего треда понял, что найденное решение, кхм, не очень. Решил сделать еще раз, строго по примерам и манам. Наткнулся на странный момент.

Модуль main подключает класс BPlot(QGraphicsView). Выполняется следующая фигня

self.graph = BPlot()

В BPlot вызывается __init__, resizeEvent и showEvent.

def __init__(self, parent=None):
    super(BPlot, self).__init__(parent)
    self.L = 25
    ... - пачка констант
    self.scene = QGraphicsScene()
    self.setScene(self.scene)

def showEvent(self, event):
    super(BPlot, self).showEvent(event)
    vw = self.viewport().width
    hw = self.viewport().height
    self.scene.setSceneRect(0,0,vw,vh)
    self.populate(vw, vh)

def populate(self, vw, vh):
    self.axis = QGraphicsLineItem()
    self.axis.setLine(0,0,vw+10,vh+20)
    self.scene.addItem(self.axis)
    ... - тут идет еще пачка Item'ов

def resizeEvent(self, event):
    vw = self.viewport().width
    hw = self.viewport().height
    self.axis.setLine(0,0,vw+10,vh+20)
    ... - обновление остальных Item'ов

def setL(self):
    self.L = 35
    vw = 25
    hw = 45
    self.axis.setLine(0,0,vw+10,vh+20) - там не так, просто пример

Фигня в следующем. Я могу вызвать self.scene.items() чтобы получить список Item'ов. При вызове из первыз четырех функций все отлично. Но если я вызываю его из BPlot или просто из функции-не_Event'а вроде setL() - то он выдает пустой массив. Также он нормально обрабатывает boundingRect() в этих функциях и выдает пустоту в других. Причем обычные значения переменных (например self.L) он обрабатывает нормально откуда бы я его не вызывал (и из main, и из BPlot)

Возможно я делаю неправильно, создавая scene сразу внутри BPlot, сейчас пытаюсь создать его в main и передать в BPlot оттуда

ЧЯНТД?

upd: Наткнулся похоже на основной косяк - если вызвать в main

print(self.graph.scene)
или в BPlot _вне_ первых эвентов
print(self.scene)
он ссылается на один адрес в памяти. А если вызвать принт внутри эвента - он идет на другой адрес О_о WTF???

 ,

upcFrost
()

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