LINUX.ORG.RU

Сообщения division_hell

 

Десктоп-спай или суровый учет времени

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

Нужна софтина, которая будучи запущена на хосте «жертвы» раз в некоторое время отсылает удаленной стороне:

  • активное окно
  • список заголовков окон
  • количество напечатанных байт
  • количество пройденных мышью километров

На стороне сервера оно должно:

  • рисовать графики с ID железа, откуда было отправлено и из под какого юзера
  • MRU window title
  • ну и прочее аналогичное
  • частота смены окна

Желательно, чтобы было под linux/windows.

P.S. python-xlib выдает какой-то странный треш вместо названий окон очень часто, поэтому хочу попросить предложить что-то альтернативное.

И да, следить пока буду за собой.

 , ,

division_hell
()

Битый видеопоток в opencv на Logitech C525 HD

Использовал пример из документации, пробовал играться с yuv/rgb и т.д., менять фпс и разрешение. В выводе все время это.

import numpy as np
import cv2

cap = cv2.VideoCapture(-1)

while True:
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame', gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

При этом uvccapture без параметров работает, но с таким выхлопом:

root@haterelay:/tmp# uvccapture 
ioctl querycontrol error 22 
ioctl querycontrol error 22 
ioctl querycontrol error 22 
ioctl querycontrol error 22

В dmesg тишина. И всякие guvcview со скайпами выдают правильное видео. Что я делаю не так?

 , ,

division_hell
()

Импорт Office Open XML, преобразование (перевод), экспорт в тот же формат

Возникла задача для локальных нужд написать некий аналог google translate toolkit, который позволяет импортировать docx, odt и т.д., выполнять перевод, а дальше делать экспорт в тот же формат файла с сохранением форматирования.

Зачем? GTT коверкает разметку - как минимум, портит шрифт и игнорирует комментарии.

Есть всякие традосы с memoq, которые грамотно заменяют теги и восстанавливают форматирование, но они под w~ и стоят денег.

Изначально я попробовал скопипастить принцип с omegat, конвертить всю структуру ooxml в текст вида:

<t1/>text <t2/>lol
, где XML-шелуха заменяется на последовательные <t1/>[tail], но иногда возникают проблемы при изменении порядка следования тегов (<t2/>лол <t1/>текст): приходится таскать все эти w:rPr внутри документа. Но и это не особо напряжно. Более актуальна тема с огромным количеством тегов, например, из-за того, что ворд решил сделать такую разметку:
вместо <b>some bold</b> сделать <b>som</b><b>e</b> <b>bold</b>

что после преобразования приобретает вид
<t1/>som<t2/>e <t3/>bold
Давать юзеру такое крайне некрасиво. Причем порой доходит до какого-то полнейшего абсурда, когда стиль применяется побуквенно, что порождает умопомрачительное количество тегов.

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

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

 , ,

division_hell
()

KDE 4.13.3 и сохранение размеров окна

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

В «параметры системы -> поведение окон -> особые параметры» можно добавить исключение для какого-то окна. Но для каждого мне это делать очень сильно не хочется. Поэтому вопрос: как это пофиксить и что/где смотреть, ибо раньше все работало, как ожидается.

 ,

division_hell
()

Подвисает сеть на ASUS PCE N15 (rtl8192ce)

Суть в том, что постоянно раз в 5-10 минут подвисает коннект на минуту или более (пакеты до шлюза не ходят). Собирал backports(compat-wireless) - не помогло.

На версии ядре 3.12 вот это сняло проблему:

# cat /etc/modprobe.d/rtl8192.conf 
options rtl8192ce ips=0 fwlps=0 debug=2 swenc=1

Обновился до 3.14 (debian jessie) - опять начало подвисать. Поэтому у меня вопросы: 1) что этой дряни надо, 2) что/где смотреть/искать, 3) на что эту дрянь поменять стоимостью до 1.5к деревянных (что без плясок и правок конфигов будет работать, желательно чтоб 100мбит тащило)

Спасибо.

 , ,

division_hell
()

Подсветка терминов из глоссария в тексте

Есть глоссарий примерно на 500к терминов. Термины могут состоять из нескольких слов, при этом количество слов может быть любым. Есть текст, в котором нужно подсветить (найти) термины. Сейчас сделано в лоб, по тупому: текст разбивается на фрагменты по одному->несколько слов (1-2-3-N). Комбинаций получается очень много. Далее, эти комбинации потенциальных терминов скармливаются пакетно сфинксу. Нашлось что-то - значит термин, подсвечиваем.

Одна из проблем в том, что поиск терминов нужно осуществлять с учетом морфологии, да и fuzzy matching приветствуется. Поэтому на первое время я взял без заморочек сфинкс.

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

Вопрос вот в чем: изобретаю ли я велосипед? Будет ли от этого толк? Какие готовые решения есть?

 , , глоссарий, поиск терминов, стеммер

division_hell
()

MySQL - вставка строчки между двумя существующими

Задача такая: есть блоки текста в таблице `id | text | created_at | ...`, которые могут быть разбиты на меньшие. Естественно, фрагменты не должны оказаться в конце с наибольшим id (primary_key, autoincrement), потому что по id упорядочивается вывод текста.

update sentences set id=id+1 where id>=6 order by id desc;
insert into sentences (id, name) values (6, 'trash')

Вообще, я думаю, что трогать autoincrement некрасиво, вдобавок я использую django orm, а это значит, что при наличии FK на запись, все ссылки при сдвиге сломаются.

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

Поэтому мне любопытно, как сделать это нормально.

 , , ,

division_hell
()

Django-based forum, unread tracking

Пишу от скуки еще-один-форум-на-джанге. С трэкингом все более или менее ясно, только вот решение в лоб муторное:


class Object(models.Model):
    user = models.ForeignKey(User, null=True, blank=True, on_delete=models.SET_NULL, verbose_name=_('User'))
    parent = models.ForeignKey('self', null=True, blank=True, related_name='object_parent', verbose_name=_('Parent'))

    created_at = models.DateTimeField(_('Created at'), auto_now_add=True)
    updated_at = models.DateTimeField(_('Updated at'), auto_now=True)
    ip = models.GenericIPAddressField(_('IP'), blank=True, null=True)

    related_object_type = models.ForeignKey(ContentType, blank=True, null=True)
    related_object_id = models.PositiveIntegerField(blank=True, null=True)
    related_object = generic.GenericForeignKey('related_object_type', 'related_object_id')
    # related_object = generic.GenericForeignKey('related_object_type', 'id')

    children_depth_1 = models.PositiveIntegerField(_('Children at depth 1'), default=0)
    children_depth_2 = models.PositiveIntegerField(_('Children at depth 2'), default=0)

    class Meta:
        verbose_name = _('object')
        verbose_name_plural = _('Objects')
        ordering = ['id']

class GenericObjectReadTracker(models.Model):
    user = models.ForeignKey(User)
    generic_object = models.ForeignKey(Object)
    created_at = models.DateTimeField(auto_now=True)

(всё относящееся к форуму наследуется от Object, дабы потом иметь наглядное дерево и ленивые created_at, last_update, автоматические счетчики children, ip, owner: один фиг, почти любая сущность, создаваемая внутри форума, обладает той или иной частью этих полей)

А это значит, что потом нужно этот треш удалять: проверять, а не являются ли уже все топики unread, или является ли весь форум read и т.д. Сама по себе фишка полезная: можно смотреть чем интересуется юзер и на этом делать suggestions для других юзеров, к примеру. Только вот муторно этот код писать. Поэтому любопытно: существуют ли более простые способы трекинга?

 ,

division_hell
()

Highload: fulltext поиск + storage

Есть примерно 1Тб уникальных текстовых строк длиной около <5к символов. Это все нужно сохранить и сделать по этому полнотекстовый поиск, который даст хотя бы 100 результатов в минуту. Крайне желательна поддержка морфологии для популярных языков.

И тут у меня есть 2 вопроса: в чем хранить данные и чем их индексировать. Данные будут сравнительно редко изменяться (хочется избавиться от изменений вообще). Запись в общую базу будет происходить скорее всего чанками по 100 метров из кэша MySQL && Redis. Т.е. хранилище будет на 99.9% перманентным и использоваться будет только для поиска.

Пока посматриваю в сторону sphinx/solr, потому что приходилось их использовать пару раз. А вот как, где и в чем хранить столько данных не имею понятия.

 ,

division_hell
()

Инкрементальный diff, samba

Для мониторинга телодвижений нужно вещицу, которая умеет искать и дампить различия в docx, xlsx, txt и и.д., а потом патчи слать на мыло.

Пока на ум приходит только создать .yesterday, туда совать все вчерашнее, а на следующий день дергать текст из сегодняшних документов и вчерашних и патчем его. Есть, конечно, идея заюзать svn/git, но docx - зипари [т.е. придется предварительно экстрактить текст в репозитарий по тригу на mtime, а потом делать коммит].

Заморачивался кто-нибудь чем-то аналогичным?

 ,

division_hell
()

ip видео-камера с ИК-подсветкой

Купил dlink dcs 942l. Жалею: ИК-датчик движения постоянно ловит false-positive, другой - почти постоянно. 500 метров видео в день - слишком много. Хочется нечто аналогичное без постоянных false positive за <10 килорублей. Хотелось бы услышать какие-то комментарии по поводу выбора камеры. Ставиться камера будет перед входной дверью в квартиру и может быть на лестничной клетке.

 

division_hell
()

Получить strpos() тэга в исходном xml

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

xml выглядит как-то так (docx, pptx, odt и т.д.):

<w:r>
  <w:rPr>
    <w:sz w:val="36"/>
    <w:szCs w:val="36"/>
  </w:rPr>
  <w:t>w</w:t> <!-- :( -->
</w:r>

Нужно получить offset w.

Самоочевидный такой вариант:

from lxml import etree
text = open('/devel/tmp/doc2/word/document.xml', 'r').read()
root = etree.XML(text)

start = 0
for e in root.iter("*"):
    if e.text:
        offset = text.index(e.text, start)
        l = len(e.text)
        print 'Text "%s" at offset %s and len=%s' % (e.text, offset, l)
        start = offset + l

Но если в e.text будет «w», «a» и т.д., то будет найден индекс не тэга, а чего попало.

 , ,

division_hell
()

resize root fs

Если бы это было LVM, то вопрос решался бы просто. Но ставил я ось давно, еще когда-то lenny, который был заапгрейжен в конечном итоге до wheezy. Для наглядности приложен скрин (кстати partition manager не хочет ресайзить партицию) того, что нужно получить: а именно расширить root (sda1) на 20 гиг. 20 гиг были отпилены от ntfs раздела, который в extended на sda2.

Я уже почти готов был написать «resize2fs /dev/sda1 %s», но потом подумал: а поймет ли оно куда ресайзиться? Как мне расширить раздел, чтобы ничего не убить?

 

division_hell
()

any2txt

Понадобилось сконвертить пачку разных документов в txt (pdf, xlsx, xls, doc, docx и т.д., короче, все что юзера сейвят на файлопомойку). То что можно по расширению/mime посмотреть и запустить соответствующий xxx2txt знаю. Гуглом не нашел. Может есть уже такое, или велосипед писать?

 anything2txt,

division_hell
()

Acorp wpci-150n (RT3060)

Debian wheezy. Поставил `firmware-ralink`. Гуглил на тему RT3060, пробовал собирать модули (которые убрали с сайта http://www.ralinktech.com/, например 2010_07_16_RT2860_Linux_STA_v2.4.0.0.tar.bz2) - собираются, потом после modprobe система падает, а потом грузится с кучей ошибок.

Ядро - 3.2.0-2-rt-amd64, модуль rt2800pci. Пробовал firmware брать с сайта ралинка - эффект тот же.

По dhcp ip не выдаются. Когда прописал ip статикой, один раз случайно заработало, после ребута перестало. Пробовал без network-manager'а - то же самое. После проб все связанное с wlan0 убирал из /etc/network/interfaces.

Полный лог: http://pastebin.com/UxnHMdn1

( читать дальше... )

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

У меня три вопроса: 1) почему не хочет подниматься dhcp? 2) почему статика иногда работает, но почти всегда нет (т.е. оно пару раз включалось)? 3) на каких картах нет этих плясок? Я проще выброшу нахрен эту дрянь, если оно не работает из коробки.

 rt3060, , wpci-150n

division_hell
()

[Python] Генерация платежных отчетов в docx/odt/pdf

Добрый день.

Нужно генерить акты выполненных работ и счета фактуры, попутно ставить печати/подписи.

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

1. Насколько эти документы чувствительны к отступам, полям и т.д.? Т.е. может ли документ считаться невалидным, если у него косяки с отступами?

2. Есть ли какое-нибудь API по генерации подобных документов по шаблонам?

3. Если использовать docx->pdf, то корректно ли будет просто пройтись sed'ом по зипу с docx и зареплейсить шаблонные строки?

4. Если кто-то для этой цели использовал какие-то конкретные решения, то поделитесь плиз. Тема хоть на первый взгляд и простая..

p.s. когда уже документы будут с выглядеть как QR-коды, к примеру. Взял, сунул id'шник документа в json с данными в qr-код, а на месте он сам бы сгенерился по шаблону и данным. И никакого распознания. И всякие ООО оформлялись бы через `apt-get install ooo-vector-m-base`...

 , , , , генерация документов

division_hell
()

rsync удаляет открытые файлы

Есть 3 сервака, которые сливают записи на 1 хранилище. Никакой пост-обработкой данных серваки не занимаются, поэтому данные эти там не впились, их проще сразу снести.

/usr/bin/rsync -raz --progress --size-only --remove-sent-files /projects/recordings/ site.com:/var/www/storage/recordings/

Все было бы прекрасно, но rsync копирует (и удаляет) и файлы, которые не были закрыты, т.е. те, в которые еще происходит запись. А софт потом ругается, мол: агдефайл?

Я решил lsof'ом посмотреть что там не закрыто, кинуть файлы в exclude list для копирования rsync и радоваться жизни. Получилось что-то такое:

# выхлоп вида /projects/recordings/<uid>/<path>/2012-07-16 13:24:32.646970-<id>.WAV
lsof | grep /projects/recordings/.\\+\\.\\S\\+ -o | sort | uniq > /tmp/rsync.exclude

/usr/bin/rsync -raz --progress --size-only --remove-sent-files --exclude-files=/tmp/rsync.excldude /projects/recordings/ site.com:/var/www/storage/recordings/

# поменяем владельца на помойке
ssh storage@site.com chown -hR storage:storage /var/www/storage/recordings

Но rsync видимо хочет увидеть там шаблоны (--exclude-from=FILE read exclude >>patterns<< from FILE), а не абсолютные пути.. да еще и с пробелами. И тут меня все опечалило.

Поэтому есть 2 вопроса: 1) что можно взять вместо rsync (что умеет не трогать открытое) 2) как rsync обучить не трогать чужое

 ,

division_hell
()

Web file browser

Добрый день. Нужно юзерам дать возможность сёрфить структуру каталогов вида:

<uid>/processed_data_type_1/<file_list>
<uid>/processed_data_type_2/<file_list>

Ищется что-то типа AJAXPlorer, но только для Django, потому что не хочется использовать что-то кроме питона, ибо зоопарк, и потому что юзеру придется дважды логиниться (либо придется изобретать какой-то механизм переноса сессий).

Видел django-filebrowser и django-fileman, первое имхо не очень подходит для цели, второе старое.

 , , user specific

division_hell
()

Тормозит переключение вкладок в Chrome 20+- диагностика

Debian Wheezy, KDE 4.7.4

# uname -a
Linux MITOL 3.2.0-2-rt-amd64 #1 SMP PREEMPT RT Fri Jun 1 18:41:20 UTC 2012 x86_64 GNU/Linux
# google-chrome --version
Google Chrome 20.0.1132.34 beta

На RT ядро не грешить: я его поставил недавно, чтобы слегка победить вышеобозначенные тормоза.

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

Вопрос в методах диагностики: как понять что выступает в роли ручника при переключении вкладок? Форумы и прочее парсил, но там обычно про тормоза под w~

P.S. Новая вкладка открывается ~2с, переключения с лагом в 0.5с. Тачка - core i3, 16gb, gt240. Всякие gl-расширения хрома включены. Отключать пробовал - разницы никакой.

 

division_hell
()

Система группового перевода текстов

Есть тема для перевода текста описаний пакетов в Debian. А есть такое же, только с поддержкой перевода текста частями?

К примеру, взял я, выделил первые 2 предложения, вбил перевод. Потом Петя перевел 4-5 предложения, а Вася взял да и перевел целый абзац, поглотив все предыдущие переводы. Потом Маша добавила в стек [петин_абзац_минус_одно_предложение:4]. Ну и так далее. Есть ли что-нибудь такое?

 ,

division_hell
()

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