LINUX.ORG.RU

Сообщения Obey-Kun

 

Рабочее место на новой работе

Галерея — Рабочие места

У меня пошла третья неделя на новой работе, Petromodeling. Я геолог, прохожу аспирантуру в МГУ, но считаю себя скорее программистом. Я всего второй кодер в штате (после гендира-соучредителя). В качестве первого проекта занимаюсь автоматизацией лаборатории по механическим испытаниям грунтов, первой подобной по масштабу и подходу в России. За время работы поставил на рабочий компьютер привычный мне дистрибутив и сделал 4 софтины, три на Qt/C++ и одну на PHP/JavaScript:

  1. Постоянно опрашивающую датчики смещения. Потом будет переписано на C++ переедет на микроконтроллер, которые я пока ни разу в жизни не программировал. Там надо будет ещё диоды включать, когда на станок надо навешивать новый груз. Скорее всего, возьмём STM32, так нам посоветовали на физфаке.
  2. Опрашивающую первую программу (TCP) по заданной ГОСТом программе. Потом переедет на микрокомпьютер, который будет обслуживать всю лабораторию из 80 (а потом и 200) станков.
  3. Принимающую данные от второй (gsoap) и записывающую их в MSSQL. Запущена в Hyper-V виртуалке с Арчем на нашем интернет-сервере. Мне не нравится, что для хранения данных с датчиков выбрали SQL, можно же сделать специализированную бинарную БД. Но на этом настаивает начальник. Хорошо хоть, что датчики опрашиваются редко.
  4. Рисующую графики в браузере в реальном времени. Впервые в жизни писал на PHP и JavaScript, осилил за вечер. Это proof of concept и скорее всего, интерфейс будем делать на node.js или чём-то подобном (что мне тоже придётся впервые изучать), чтобы не постоянно опрашивать БД, а принимать от БД event'ы о новых записях. Что-нибудь посоветуете? Я в веб-технологиях ноль. Там по сути нужны всякие динамические таблицы и графики, оповещения.

Состав рабочего места:

  • 4 монитора HP ZR2440w. В жизни не работал на 4 мониторах, но теперь не представляю, как писал весь код на своём Thinkpad T400.
  • Клавиатура HP RK713A. Надо будет заменить на клаву, где F12 находится над backspace, а то неудобно вызывать Yakuake.
  • Мышка A4Tech XL-750BK на большом удобном коврике от той же конторы. Нормальная такая мышка, смущают только лишние кнопки.
  • Intel Core i7-3930K.
  • 64 ГиБ оперативки.
  • Radeon HD 7970. Пока ещё не поставил Steam и не гонял в доту. Вроде бы даже не придётся ставить Catalyst.
  • Arch Linux, ZSH, KDE, Qt Creator (переучиваюсь с глючного KDevelop, хотя м.б. с выходом KDevelop 5 вернусь обратно). Как видидте, вместо обоев чёрная заливка (чтобы не грелись мониторы и чтоб не отвлекаться). Также перешёл с русского языка интерфейса на английский. С LANG=en_US.UTF-8 как-то понативнее себя чувствуешь в системе.

Контора вообще бомбическая. Офисы в бизнес-парке на Воробьёвых горах. Тут все рабочие места или такие, или с двумя огромными мониторами, размещёнными вертикально. Всего 14 рабочих мест по четыре 24" монитора, 20 по два 30″ и 2 с одним 30″. Мой десктоп размещён внутри лаборатории и является одним из двух здесь. Я окружён милыми лаборантами, а рядом сидит гендир на винде и вспоминает тонкости QML для лаунчера приложений нашего будущего проекта, ориентированного на западный рынок.

>>> Просмотр (4160x3120, 1946 Kb)

 , , ,

Obey-Kun
()

Wheezy/XFCE4 отключение возможности монтирования устройств

Форум — Admin

Почему-то монтирование переносных устройств в xfce4 работает, даже если пользователь не находится в группе plugdev.

Там что-то поменялось? В чём может быть дело?

Нагуглилось вот это: автомонтирование устройств и баги xfce4 (комментарий) (но я не уверен, связано ли это с моей проблемой).

 , plugdev,

Obey-Kun
()

Смена пароля каждые N дней и управление сложностью пароля

Форум — Admin

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

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

Также надо ввести минимальную длину пароля и, желательно, какой-либо критерий сложности.

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

В оффтопике на старой системе это администрировалось так: http://plasmon.rghost.ru/private/51007228/5dfdd643da7f57604e0df7872e742b0d/im....

Я знаю, что есть chage, который (как я понял) позволит установить форсирование смены пароля при залогинивании через tty. А что насчёт остальных требований? И что насчёт login manager? Надо, чтобы юзер менял пароль с использованием гуя, если срок истёк? Сейчас там lightdm.

Я очень редко задаю вопросы в плане администрирования, ведь есть гугл. Но по этому вопросу что-то ничего выискать не удалось (ну кроме chage).

 chage,

Obey-Kun
()

СейсмоАд

Галерея — Скриншоты

На скриншоте можно наблюдать три связанные по сети программы, имеющие отношение к системе сейсмического мониторинга, низкоуровневой частью которой (всё, кроме GUI и железа) я занимаюсь.

Слева направо:

  • Эмулятор сейсмического регистратора. Транслирует данные по UDP — полностью аналогично настоящему (железному) собрату, коих используется по несколько на объект. Был создан для отладки разных элементов системы.
  • Управляющая программа. Точнее, простенький GUI, основанный на библиотеке, которую я сделал для управляющей программы. Принимает данные от регистраторов по UDP, делает комплекс обработки (начиная интегрированием для получения скорости и смещения и кончая детектированием землетрясений и определением их параметров), а также выступает в качестве TCP-сервера для трансляции полученных графиков на автоматизированные рабочие места (АРМ) и в архив (в самописный бинарный лог, сделать который меня сподвигнули mashina и vmx).
  • Приёмщик трансляции. Сделанная на коленке программа для проверки правильности TCP-трансляции из управляющей программы.

Всё это написано на Qt/C++. Qt глубоко въелся в мою натуру. И не надо кидаться в меня камнями по поводу его использования вне иксов, там очень удобно работать с сокетами и базами данных, а сигналы-слоты отлично дополняют всё это — что позволяет с лёгкостью и удовольствием писать в том числе и всяческие демоны. А GUI на АРМах, кстати, на node.js.

На серверах и АРМах после моего настойчивого воздействия на заказчика получилось поставить Debian Wheezy. А не провоздействовал бы — пришлось бы оставить винду: начиная семёркой и кончая Server 2012. Они там почему-то очень боятся *nix — его можно встретить только на самых важных узлах системы (и там, насколько я понял, обычно QNX). И это-то на одном из крупнейших нефтепроводов в России…

Arch Linux. Plasma: Produkt; KWin/Qt: QtCurve (Numix); цвета Numix; шрифты Droid.

Ах да, на обоях стоит стандартный KDE-шный орнамент «Французский узор». Отлично подходит к тёмной теме и тёмному ушатанному Thinkpad'у T400, на котором всё это крутится. Скриншот рабочего стола: тыц.

>>> Просмотр (1440x900, 342 Kb)

 , , ,

Obey-Kun
()

FTP/HTTP сервер: удаление файлов после скачивания

Форум — Admin

Салют.

Нужно сделать так, чтобы ссылки на файлы (http или ftp) были одноразовыми. Т.е. удалялись, как только пользователь их скачал (или начал скачивать, но отменил загрузку или потерял коннект).

Желательно это сделать средствами самого http/ftp-сервера, а не костылями навроде парсинга логов по крону.

Весь контент статический. Пользователей у сервера будет 1-2, а скачивать они будут ой как редко. Но экзотический софт не подходит, хотелось бы управиться в рамках классики типа lighttpd/nginx/vsftpd/...

Знаю про post_action nginx, можно повесить туда соответствующий скрипт через fastcgi, но по-моему, это забивание микроскопом гвоздей.

Файлы, кстати, большие, так что FTP предпочтительней.

 , , , ,

Obey-Kun
()

QCustomPlot 1.1.0

Новости — Open Source
Группа Open Source

4 ноября 2013 года вышла версия 1.1.0 библиотеки для построения двухмерных графиков (и не только) для Qt/C++. Главное изменение в новой версии — поддержка Qt 5.1 и 5.2 (beta1).

QCustomPlot — это достаточно молодая, но уже достаточно зрелая библиотека, позволяющая производить построение графиков как являясь частью интерфейса приложения (в качестве виджета или элемента QTextDocument), так и с выводом в файл (поддерживаются растровые и векторные форматы). Библиотека является довольно производительной и хорошо подходит для обновления графиков из поступающих в реальном времени данных.

QCustomPlot развивается активнее, чем свой прямой конкурент Qwt, и хотя ещё и не доросла до неё по функционалу, но подаёт очень большие надежды.

Основным разработчиком QCustomPlot является немец Emanuel Eichhammer. Библиотека распространяется под лицензией GPLv3, но автор упоминает возможность распространения под другими условиями с его персонального разрешения (например, под LGPL).

Сайт проекта

Документация

>>> Список изменений

 , , , ,

Obey-Kun
()

Surgeon Simulator 2013 в Steam

Новости — Игры
Группа Игры

Аркадный симулятор пьяного хирурга Surgeon Simulator 2013, написанный с использованием движка Unity, вышел в Steam после одобрения сообществом в Steam Greenlight. Прототип игры уже давно находился в свободном доступе, а теперь доступна платная версия игры, в которой улучшена графика, добавлены новые операции, окружения и эффекты.

Попробовать себя в роли хирурга и отомстить всему человечеству может любой пользователь Linux, Mac OS X или Windows. В игре возможно большое количество разнообразных операций — от пересадки сердца до пересадки мозга. А случайный укол лежащим на столе шприцом приведёт к попаданию в психоделический трип, что привнесёт в операцию совершенно новые ощущения.

Официальный сайт игры

>>> Страница в Steam Store

 , ,

Obey-Kun
()

Конвертация 3 байт в int, я правильно делаю?

Форум — Development

В спеках пакетов с данными от некоторой железки написано «Первые 8 байт отбрасываются, а далее идёт 150 чисел. Числа записаны как беззнаковые целые по 3 беззнаковых байта в big endian (старший, средний, младший). Значение отсчёта умножаем на цену деления (2.5v/0xFFFFFF) и вычитаем середину шкалы (1.25v)». Я получаю массив char'ов (QByteArray) и далее для получения всех чисел делаю следующее:

static double SomeClass::getOneReading(QByteArray::ConstIterator &it)
{
    const unsigned char b1 = *(it++);
    const unsigned char b2 = *(it++);
    const unsigned char b3 = *(it++);

    // Не преобразованное показание АЦП
    const quint32 block =
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
            (b1 << 24) +
            (b2 << 16) +
            (b3 << 8);
#else
            b3 +
            (b2 << 8) +
            (b1 << 16);
#endif

    /// Цена деления (коэффициент перевода показаний АЦП в напряжение)
    static const double delta = 2.5 / 0xFFFFFF;
    /// Середина шкалы
    static const double Vcm = 1.25;

    return double(block) * delta - Vcm;
}

void SomeClass::processRecord(const QByteArray &recordDatagram)
{
    QList<double> readings;
    readings.reserve(150);

    // Первые 8 байт нас интересуют
    QByteArray::ConstIterator it = recordDatagram.constBegin();
    for (int i = 0; i < 8; ++i) {
        ++it;
    }

    // Нам интересны 450 байт из пакета с данными
    QByteArray::ConstIterator end = it;
    for (int i = 0; i < 450; ++i) {
        ++end;
    }

    while (it != end) {
        Q_ASSERT(it < end);
        readings << getOneReading(it);
    }

    emit gotRecord(readings);
}

Здесь всё правильно, или же вкралась некая ошибка? Я спрашиваю потому, что производитель железки, данные с которой я обрабатываю, катит на меня бочку, что я, мол, неправильно обрабатываю данные, а потому с некоторой периодичностью получается чушь вместо правильных данных.

Косяк заключается в том, что раз в N пакетов (N~=20-30) вместо нормальных данных получается какой-то непонятный забор, будто от переполнения буфера.

Я почти уверен, что проблема не в моём коде, а в железке, но вдруг ЛОР заметит здесь некий невидимый моим привыкшим к высокоуровневому программированию глазам косяк?

 , ,

Obey-Kun
()

NoSQL БД для временных рядов. Посоветуйте подход к проектированию или готовую.

Форум — Development

Уже был один топик — Посоветуйте БД для кучи данных по мониторингу. Но требования упростились.

Итак, 3 сейсмостанции на объекте присылают по 450 байт бинарных данных каждые пол-секунды. Надо писать все приходящие данные в базу данных (т.е. в среднем 6 записей в секунду общим весом 2.7 КиБ) с отметками времени. Также необходимо сжатие данных, которые кладутся на хард, на лету.

Плюс со всех объектов (их будет около 15) надо в реальном времени складировать входящие данные на сервера хранения (их два), то есть на сервера хранения будет поступать уже 90 записей в секунду общим весом 40 КиБ (т.е. около 3 млрд записей на 1 ТиБ в год, если не учитывать сжатие). Это не обязательно должна делать сама БД, я это могу реализовать прослойкой, в т.ч. клиент-серверной.

Что касается чтения: нужен буфер последних нескольких секунд (но это не обязательно должно быть в самой БД, могу сделать прослойку, которая будет класть все новые данные в БД + держать кеш в памяти) и возможность быстро получить все данные по одной или нескольким сейсмостанциям за заданный период.

Система должна работать годами без всяческого вмешательства.

Есть ли что-либо готовое, что удовлетворит таким требованиям? Смотрю в сторону SciDB, но пока не особо разбирался, мутноватая она какая-то.

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

 , , временные ряды,

Obey-Kun
()

Посоветуйте webkit-браузер для работы в режиме киоска

Форум — General

Сабж. Пока нашёл только https://github.com/pschultz/kiosk-browser, но ещё не пробовал (проблемы с интернетом).

Нужна для АРМ (автоматизированных рабочих мест) на одном предприятии. У этих АРМ единственная задача — отображение одного-единственного сайтика на node.js.

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

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

Годится только webkit, т.к. на всяческие gecko наш веб-интерфейс не заточен, а переделывать долго (такой задачи не ставилось изначально).

Если не найду ничего подходящего, придётся состряпать самому — благо, могу Qt/C++. Но зачем изобретать велосипед? Наверняка такое уже есть.

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

 , ,

Obey-Kun
()

У кого арендовать выделенный сервер? Нужна дешёвая IPv4 подсеть.

Форум — Talks

Уже несколько лет арендовали сервер в hetzner через посредника (fastvps). Давали целую подсеть IPv4. Там у меня ~70 виртуальных машин (openvz), у каждой свой IP. Всё это счастье мне стоило около 150 евро в месяц.

А тут они внезапно стали брать 128 евро в месяц за выделенную подсеть. Т.е. стоимость сервера возросла почти вдвое. Окупаемость теперь на грани.

Посоветуйте, пожалуйста, куда можно сбежать? Главное требование: нужна дешёвая подсеть на 64 или 128 адресов.

 

Obey-Kun
()

Посоветуйте БД для кучи данных по мониторингу

Форум — Development

С трёх сейсмостанций по UDP каждые полсекунды поступает по 50 значений ускорения по каждой оси (x, y, z). Итого 50 * 3 * 3 * 2 = 900 значений в секунду. Каждое отправляемое сейсмостанцией значение занимает 3 байта, что потом пересчитывается из вольтажа АЦП в 8-байтовое (double) ускорение простым алгоритмом и записывается в БД. Все данные пишутся кусками по 3 секунды в BLOB как double'ы (одна ось = одна запись, т.е. каждая сейсмостанция даёт по 3 120-КБайтной записи каждые 3 секунды).

Эти данные каждые 3 секунды считываются из БД тремя разными системами (мат. обработка, real-time репликация на соседний сервер, визуализация данных для оператора). Причём система мат. обработки рассчитывает скорость и перемещение и сохраняет всё это в ту же БД.

Сейчас в качестве БД используется Firebird. Какая-нибудь БД подойдёт для этих целей заметно лучше Firebird'а? И можно ли как-то оптимизировать описанный процесс?

 ,

Obey-Kun
()

Valve выпустила бета-версию Half-Life под Linux

Новости — Игры
Группа Игры

У всех владельцев Half-Life в Linux-версии Steam появилась возможность установки бета-версии этой замечательной игры, которая вышла уже полтора десятка лет назад.

Также появились намёки на начало создания Linux-версии игры Counter-Strike 1.6, которая до сих пор остаётся достаточно популярной киберспортивной дисциплиной.

На фоне проявлений подобного хорошего отношения Valve к Linux (выпуску Steam для Linux, портированию игр, взаимодействию с разработчиками видеокарт для улучшения драйверов, работой над игровой Linux-консолью и т.п.) можно надеяться, что 2013 год будет годом начала полноценного Linux-гейминга.

>>> Страница игры на xpaw (см. пункт «oslist»)

 , ,

Obey-Kun
()

Что это за зверь?

Форум — Talks

Знакомые сфотографировали на Коста-Рике (Национальный парк Ареналь): тыц. Кто это?

 белочка

Obey-Kun
()

Многопоточный for внутри QThread

Форум — Development

День добрый. Есть рассчётное ядро софтины для моделирования (QFrost). Нужно внутри std::vector выполнить некоторый метод каждого его элемента. Порядок выполнения не важен, элементы друг с другом никак не связаны. Так что хочу распараллелить. Потом распараллелю это с помощью CUDA или OpenCL, но пока хочется задействовать хотя бы все ядра процессора.

Пробовал OpenMP с его #pragma omp parallel for, но так как расчёты запускаются гуём и производятся внутри QThread, OpenMP не хочет окуппировать более одного потока. Если делать это в основном потоке, всё ок. Гугл знает об этой проблеме с некоторыми версиями GCC, но решения мной найдено не было.

Как лучше решить эту проблему, если во главе угла — производительность и кроссплатформенность? Пока попробую TBB (parallel_for оттуда). Средства Qt, желательно, не предлагать, т.к. не хочу использовать их в расчётном ядре. С радостью бы воспользовался std::async из C++11, но тогда появится геморрой со сборой в винде. Напоминаю, основная проблема — то, что этот for будет запускаться внутри QThread.

 , , ,

Obey-Kun
()

Посоветуйте методологию написания мануала к софтине

Форум — Talks

Сабж. Софтина с гуём.

Upd: Интерфейс интуитивно-понятный, но софтина будет использоваться в т.ч. старичками с кафедры, которые без мануала забьются в угол. Алсо для написания мануала, т.к. он будет печатным, я собираюсь использовать LaTeX. Вообще, есть кое-какие наработки годовой давности, но неужели нет каких-то годных conventions? Или просто мануала для софтины с гуём, который кажется вам оптимальным.

 

Obey-Kun
()

User-friendly интерфейс софта для трёхмерного моделирования

Форум — Talks

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

Вероятно, уже будет не блоковая разбивка, а триангуляционная. Таким образом, пользователь будет работать с абстрагированными от разбивки расчётной области формами. Надо дать ему возможность задать размер расчётной области при виде сверху и её глубину, после чего позволить ему размещать внутри неё разнообразные элементы для задания граничных условий (например, трубы). Но остаётся вопрос задания формы расчётной области в верхней части (т.е. рельефа) и верхних граничных условий.

Может быть, знаете удобный софт для 3D-моделирования или даже разрабатывали что-то подобное?

 , , ,

Obey-Kun
()

Посоветуйте нетбук/таблетку/планшет с клавой

Форум — Talks

Покупаем маме нетбук. Что сейчас есть достойного? Единственное условие — на борту должен быть 3g или 3g+LTE. Было бы интересно что-нибудь на Tegra, например. Или Tegra-нетбуки вымерли? Atom — тоже вариант, хотя таки хочется экзотики.

Вообще, хотели изначально купить ей что-то вроде Google Nexus 7/10, но как оказалось, планшеты она (пока?) не приемлет, нужна механическая клавиатура. Так что дешёвые таблетки с Андроидом тоже были бы интересны. Как и планшеты с опциональной механической клавой типа ASUS Transformer Pad Infinity.

Заказать можем и в Китае, и в Штатах, и где угодно.

А линукс тут при том, что ставить туда буду ubuntu или arch c lxde или xfce. Хотя, если он изначально будет на Андроиде, то, возможно, и не буду ничего менять, но тогда добавляется ещё одно условие — там должна наличествовать (не обязательно по дефолту) как минимум его версия 4.1.

Obey-Kun
()

Напомните фильмы

Форум — Talks

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

 , гандикапы

Obey-Kun
()

Косоглазие, появившееся в 23 года

Форум — Talks

После долгой бессонницы (спал редко и мало в течение 2 недель), дополнительной сильной нагрузки на глаза (mdma :)) и сильнейшего стресса и потрясений появилось косоглазие небольшое, держится уже третий день. Вроде бы не прогрессирует, но и не уменьшается.

Кто-нибудь имел опыт с подобным? Лечили как? Помогло?

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

Obey-Kun
()

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