LINUX.ORG.RU

Сообщения totik

 

Совместимость модуля памяти с материнской платой по частоте

Форум — Linux-hardware

Имеется материнская плата Asus P7P55 LX, в которой установлен модуль памяти с маркировкой DDR3 2Gb PC3-10666 1333MHz DIMM Kj. Все работало как часы.

Тут хозяин компьютера решил немного обновить компьютер и поставил два модуля DIMM DDR3, 4ГБ, Kingston, KVR16N11S8/4 (1600 МГц PC-12800) взамен той, что была.

Windows 7, что стояла на этой машине стала падать в bsod при загрузке. С установочного диска тоже не грузится - выпадает в bsod.

Я взяла эти две планки и поставила в свой компьютер с материнкой - Asus P8875-M. Линукс загрузился без проблем. memtest не показал каких-либо проблем.

В чем может быть проблема?

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

totik
()

Современная музыка и средневековье, например

Форум — Talks

Как вы думаете, есть ли вероятность найти такого человека из средневековья, дав послушать которому Panacea - The Evil Seed (Limewax Remix) или любой трек Sepultura, например, он проникнется и заколбасится?

И как вы думаете, насколько деморализовала бы музыка Meshuggah противника, если войска отправлялись бы в бой под нее?

totik
()

Делегат и выделение

Форум — Development

Имеется делегат обеспечивающий кастомное отображение данных в таблице. Хотелось бы описать его отображение в выделенном состоянии. Да, я могу его подсветить, затемнить или чего, но хотелось бы реализовать это в общем стиле системы.

Как я себе это вижу: я отобразила данные, а потом вызвала необходимый код, рисующий поверх полоску выделения. Нет ли такой возможности?

 ,

totik
()

Блок питания для печки

Форум — General

Собрали мы тут себе рабочую станцию со следующими компонентами:

  • AMD Athlon X4 760K Black Edition
  • MSI A88XM-E35
  • ASUS GTX650TIB-DC2OC-2GD5, GTX650 Ti Boost

Под нагрузкой (Pay Day 2) блок питания на 450 ватт не выдержал и сдох.

Какой мощности должен быть блок питания, чтобы потянуть это железо?

700 хватит?

Из доступных нашли только ATX Winard 700W (http://www.ulmart.ru/goods/752327). Все говорят, что шумноват. Но из более дорогих встречаются вообще такие стремные - и трансформаторы гудят и дроссели трещат. А тут хоть ценой компенсируется шум.

В общем, что бы вы мне посоветовали?

totik
()

Автовопрос по пдд

Форум — Talks

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

На видео все видно: https://vimeo.com/100400908

Собственно в чем был спор. Супруг утверждает, что он ничего не нарушил по пдд и по совести тоже прав. Полосы там широкие, и утром во время пробок все так и едут - по две машины на полосу.

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

А как считаете вы?

Линукс тут при том, что мы оба линуксоиды.

totik
()

ntfs-resize ничего не делает

Форум — General

Пытаюсь изменить размер ntfs-раздела, но ничего не выходит. ntfs-resize делает вид что занят делом, но в результате размер раздела не меняется.

Устр-во   Загрузочный     Start Конец     Blocks  Id System
/dev/sda1                    63    7903979    3951958+ 83 Linux
/dev/sda2 *             7903980  300242943  146169482  83 Linux
/dev/sda4             300242944 3907028991 1803393024   7 HPFS/NTFS/exFAT
[~]$ sudo ntfsresize -b --size 800G /dev/sda4 -f
ntfsresize v2014.2.15 (libntfs-3g)
Device name        : /dev/sda4
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 799999996416 bytes (800000 MB)
Current device size: 1846674456576 bytes (1846675 MB)
New volume size    : 799999996416 bytes (800000 MB)
Nothing to do: NTFS volume size is already OK.
[~]$

И вот результат:

Устр-во   Загрузочный     Start Конец     Blocks  Id System
/dev/sda1                    63    7903979    3951958+ 83 Linux
/dev/sda2 *             7903980  300242943  146169482  83 Linux
/dev/sda4             300242944 3907028991 1803393024   7 HPFS/NTFS/exFAT

То есть volume size изменился, а device size нет. Как изменить device size?

totik
()

Конвертация чего угодно в mp3

Форум — Desktop

Какой консольной утилитой можно сконвертировать звуковой файл любого формата в mp3?

Нашла утилиты для flac, ape, и прочие, но хотелось бы что-то универсальное, позволяющее конвертировать файлы произвольного формата.

totik
()

Highscreen Boost 2 SE и встроенная память

Форум — Mobile

Купила вчера Highscreen Boost 2 SE. Заявлено 8Гб встроенной памяти.

В разделе «память» настроек написано следующее:

* Внутренняя память Всего: 2,89 ГБ (доступно 2,47 ГБ)

* PHONE SORAGE Всего: 2,92 ГБ (доступно 2,91 ГБ)

В сумме выходит 5,81, а даже не 7,8, если считать по жлобски.

Как же так?

totik
()

QTcpSocket: неверный размер переданных данных

Форум — Development

Имеется клиент-серверное приложение, взаимодействующее через QTcpSocket.

С сервера QJsonObject передается следующим образом:

void TransceiverProvider::sendMessage(const QJsonObject &jsonObject)
{
    QByteArray data = QJsonDocument(jsonObject).toBinaryData();

    QByteArray  block;
    QDataStream out(&block, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_2);
    out << (quint16)0;
    out << data;
    out.device()->seek(0);
    out << (quint16)(block.size() - sizeof(quint16));

    qDebug() << "Data size:" << data.size();
    qDebug() << "Block size:" << block.size() - sizeof(quint16);
    qDebug() << "Data:" << data.toHex();
    qDebug() << "Block:" << block.toHex();

    m_tcpSocket->write(block);
}

Во время выполнения выводится следующее:

Data size: 76 
Block size: 80 
Data: "71626a73010000004400000003000000400000009b0300000700636f6d6d616e6400000022006765745f73796e635f706172616d65746572732021212121212121212121212121210c000000" 
Block: "00500000004c71626a73010000004400000003000000400000009b0300000700636f6d6d616e6400000022006765745f73796e635f706172616d65746572732021212121212121212121212121210c000000"

Клиент принимает сообщение таким образом:

void TransceiverProvider::readyRead()
{
    QDataStream in(m_tcpSocket);
    in.setVersion(QDataStream::Qt_4_2);
    for (;;)
    {
        if (m_blockSize == 0)
        {
            if (m_tcpSocket->bytesAvailable() < (int)sizeof(quint16))
            {
                return;
            }
            in >> m_blockSize;
        }

        if (m_tcpSocket->bytesAvailable() < m_blockSize)
        {
            return;
        }

        char * buf = new char[m_blockSize];
        in.readRawData(buf, m_blockSize);
        QByteArray data(buf, m_blockSize);
        delete buf;

        qDebug() << "block size:" << m_blockSize;
        qDebug() << "size:" << data.size();
        qDebug() << "data:" << data.toHex();

        emit receivedMessage(QJsonDocument::fromBinaryData(data).object());

        m_blockSize = 0;
    }
}

Вывод:

block size: 80 
size: 80 
data: "0000004c71626a73010000004400000003000000400000009b0300000700636f6d6d616e6400000022006765745f73796e635f706172616d65746572732021212121212121212121212121210c000000"

Естественно построить исходный json объект не удается. Как видно data на клиенте не равна data на сервере. А захватывает часть исходного сообщения (block).

Чем это вызвано?

 

totik
()

Линейный алгоритм деления узла для r-дерева

Форум — Development

Пытаюсь тут написать на C++ R-дерево для хранения графических (2d) элементов.

Столкнулась с самой неприятной проблемой - понимания написанного. На википедии в разделе «Функция linearSplit» имеется описание алгоритма, но после первой строчки мой мозг начинает кричать «я не хочу программировать, я хочу варить борщ!»

Предположим, что мы храним в дереве элементы со свойством boundingRect (x, y, width, height). Максимальное количество элементов в узле - 4, минимальное - 2. Имеем дерево:

Изображение дерева.

  • R - корень дерева
  • V1, V2, V3 - внутренние узлы, имеющие по четыре потомка (для
  • V1, V2 и V3 не отобразила для экономии места)
  • V5, V6, V7, V8 - листовые узлы имеющие по черыте элемента (для V5, V6, V7 так не отобразила для экономии места).
  • O1, O2, O3, O4 - элементы.

Все описанные выше сущности имеют mbr.

Предположим, что мы вставляем элемент O5. Самый подходящая листовая вершина для него - V8 (изменение mbr минимально).

1) Правильно ли я понимаю, что этом случае будет создана новая вершина (V’) и в функцию линейного разделения будут переданы вершины V7 и V’, в которой будет произведено рапределение элементов (O1, O2, O3, O4, O5) в соответствии с их mbr между этими вершинами (V7, V’)?

2) Правильно ли я понимаю, что так как в нашем случае происходит раскол до корня дерева, функция линейного разделения будет вызвана и для вершин V4, V’’, в которой будет произведено распределение листовых вершин (V5, V6, V7, V8, V’) по тому же алгоритму? И так далее пока не дойдем до корня?

Теперь что касается самого алгорима распределения. Вот что написано в вики:

По каждой координате…

Имеется ввиду измерение? В нашем случае x и y?

...для всего набора разделяемых вершин...

В случае, если мы добавляем O5 и производим деление узла V8 что тут является разделяемыми вершинами? Смущает фраза “для всего набора разделяемых верших”, ибо как бы говорит, что их может быть больше двух. Значит это не невршины V8, V’, а (в данном случае), элементы O1-O5?

... вычисляется разница между максимальной нижней границей прямоугольника по этой координате и минимальной верхней…

Как я понимаю выбирается максимальный (left/x+w) (bottom/y+h) и минимальный (right) (top) и вычисляется разница... Но ведь это по сути ширина и высота mbr для этой группы объектов?

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

Что здесь является исходным набором для построения всего дерева? Разница между мин. макс. координатой - это ведь тоже ширина/высота? Что значит нормализировать полученные width/height на другие width/height? И почему речь идет о полученной виличине, если мы получили две величины?

Дальше рассматривать алгоритм смысла не было, без понимания первой части. Альтернативных описаний алгоритма я не нашла. Может кто-нибудь подскажет?

 

totik
()

RSS vs heap, падение производительности

Форум — Development

Я уже писала о проблеме с OpenGL/Qt4 приложении написанном на C++.

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

Когда на машине с DVI монитор выключался или по бездействию уходил в энергосберегающий режим, контекст OpenGL терялся, что приводило либо к зависанию иксов, либо к зависанию приложения.

Разработчик OpenGL-движка пообещал исправить как руки дойдут, а пока обходимся `xset -dpms`.

Но вот новая напасть. Даже две.

Одна связана с потреблением памяти, другая с производительностью.

Если в приложении активен один источник данных, оно потребление памяти (RSS) с использованием jemalloc достигает 1.5 Gb. При этом google perftools стабильно говорит о том, что в куче 800 Mb. Когда приложение запускается количество примитивов (различных сущностей) доходит до максимум за полчаса. Дальше старые сущности удаляются, а новые добавляются на сцену. При этом отзывчивость интерфейса хорошая. Через двое суток размер потребляемой памяти тот же, количество примитивов то же. А вот отзывчивость ниже плинтуса. Если отключить обработку данных от источника данных, удалить все примитивы со сцены размер потребляемой памяти снизится, но отзывчивость останется той же: перемещение по сцене дикими рывками, меню и диалоги открываются с сильной задержкой.

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

Это что касается производительности. Тут у меня есть только одно предположение: фрагментация видео и оперативной памяти. Можно ли как-нибудь продиагностировать эту фрагментацию?

Вторая напасть: потребление памяти. Описанное выше происходит при использовании одного источника данных. Когда их пять, к примеру, количество сущностей возрастает кратно. А вот потребление памяти в процессе работы не останавливается на какой-то определенной цифре, а растет перманентно, даже тогда, когда количество сущностей доходит до максимума.

При это google perftools все так же говорит о том, что размер кучи не меняется. А вот значение RSS ползет.

Тут опять же в голову мне приходит фрагментация. Но даже использование jemalloc не спасает. А как мне казалось, он позволяет решить проблему с фрагментацией.

Что думаете по этому поводу?

1) Из-за чего возможно ситуация, когда RSS возрастает перманентно, а судя по показаниям google perftools размер кучи не меняется? Стек явно не причина.

2) Из-за чего возможно такое падение отзывчивости, при тех же условиях по количеству OpenGL-примитивов и размеру RSS?

 , ,

totik
()

Android ide

Форум — Development

Одна моя подруга © взялась за изучение андроидокодинга. Поставила sdk, eclipse, adt. Кодит себе спокойно, никому не мешает, постигает азы. Но вот печаль, eclipse ей кажется весьма перегруженным. А ведь все что ей нужно - редактор кода с подсветкой синтаксиса, интеграция с отладчиком, да автоматической сборкой apk и запуском эмулятора. Ну и визуальный редактор интерфейса не будет лишним. Не подскажите, есть такие в природе?

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

totik
()

OpenGL приложение вешает иксы при включении монитора

Форум — Development

Имеется некое приложение написанное на C++ с использованием Qt4. Получает по сети пакеты, парсит их и по полученным данным отображает трехмерные объекты. Графический движок, использующий openGL самописный.

И вот странность: при одинаковых настройках (в том числе сетевой поток), приложение под Ubuntu 12.10 работает сутками. Под Centos 6 и Archlinux зависает на следующий день.

Причем зависает именно тогда, когда трогаешь мышку или клавиатуру. В этот момент монитор включается, приложение вешается и так же вешает иксы.

Стабильно повторяется. Если выполнить `xset -dpms`, то монитор не уходит в спящий режим и все работает стабильно.

Драйверы nvidia пробовал разные, в том числе и такие же, как в Ubuntu, правда с другой минорной версией. Не помогло.

Как продиагностировать проблему? Какие процессы происходят при уходе монитора в энергосберегающий режим в контексте OpenGL? Отличается ли в этом плане Ubuntu от других дистрибутивов?

В момент зависания заходила по ssh на машинку, чтобы подключиться gdb, до посмотреть как оно там, но в списке процессах приложения уже не было.

Пыталась получить coredump, но systemd-coredump не отдавал его, ссылаясь на его отсутствие, несмотря на `ulimit -c unlimited`. Сейчас отстранила systemd от складирования корок и пытаюсь по старой схеме получить дамп.

Подчеркну: на Ubuntu все отлично. Приложение зависает не при выключении понитора, а при его включении.

totik
()

Синхронизация по сети

Форум — Development

Попросили на C++/Qt разработать небольшое приложение, с синхронизацией настроек по типу Chromium - при первом запуске вводишь логин (email, например), пароль - и готово.

Есть ли какие-нибудь ресурсы, предоставляющие подобный сервис (и при необходимости sdk).

Видимо что-то в духе dropbox, но чтобы не было необходимости устанавливать стороннее ПО.

totik
()

scp как библиотечный вызов

Форум — Development

В составе ssh, как я понимаю, есть замечательная утилита scp, предназначенная для копирования файлов по этому протоколу.

А есть ли аналогичный библиотечный вызов?

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

Но вот печаль, никак его не найти.

 ,

totik
()

Задачки от yandex

Форум — Development

Хотела задать вопрос в talks, но почему у меня нет такой возможности. Я недавно занялась изучением программирования на c++, поэтому прошу сильно не ругаться.

Не так давно наткнулась на вакансию разработчика в yandex, и там обнаружила несколько вопросов. Страница уже удалена, но доступна в кэше: http://webcache.googleusercontent.com/search?q=cache:l4nvA4HtP5gJ:company.yan...

Не укажите на мои ошибки в рассуждениях?

Вопрос 1

Перепишите код, устранив имеющиеся в нём проблемы, но не изменяя функцию main

class Foo {
 public:
  Foo(int j) { i = new int[j]; }
  ~Foo() { delete i; }

 private:
  int* i;
};

class Bar: Foo {
 public:
  Bar(int j) { i = new char[j]; }
  ~Bar() { delete i; }

 private:
  char* i;
};

void main() {
  Foo* f = new Foo(100);
  Foo* b = new Bar(200);
  *f = *b;
  delete f;
  delete b;
}

Здесь, я, как поняла, деструкторы должны быть виртуальными, должен быть описан оператор присваивания, а так же необходимо поле хранящее количество элементов, чтобы при копировании знать, какой длины массив? Или я что-то упустила?

Вопрос 2

В каких из следующих стандартных контейнеров худшее время поиска элемента по значению — O(log(n))?

 std::vector
 std::list
 std::deque
 std::set
 std::multiset
 std::unordered_set
 std::unordered_multiset
 сортированный std::vector
 сортированный std::list
 сортированный std::deque

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

Вопрос 3

Напишите код, преобразующий 32-битное целочисленное представление ip-адреса в строковое.

Догадываюсь, что что-то нужно куда-то сдвигать =)

Вопрос 4

Есть класс Bar, предназначенный для работы в многопоточной среде. Перечислите проблемы, которые вы видите в его реализации.

class Bar {
 public:
  void Add(int i, double d) {
    Locker auto_lock_d(m_doubles_);
    Locker auto_lock_i(m_integers_);
    integers_.push_back(i);
    doubles_.push_back(d);
  }

  bool Find(int i) {
    Locker auto_lock(m_integers_);
    if (std::find(integers_.begin(), integers_.end(), i) != integers_.end())
      return true;
    else
      return Find(double(i));
  }

  bool Find(double d) {
    Locker auto_lock(m_doubles_);
    return std::find(doubles_.begin(), doubles_.end(), d) != doubles_.end());
  }
    
 private:
  std::vector<int> integers_;
  std::vector<double> doubles_;
  Mutex m_integers_;
  Mutex m_doubles_;
};

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

totik
()

Панель инструментов в GraphicsScene

Форум — Development

Недавно подключилась к разработке приложения на Qt5. Основная часть - графическая сцена (GraphicsScene).

Суть такова. На сцене лежит QGraphicsSvgItem, отражающий план помещения. Зум по колесу мышки. При изменении зума меняется размер элемента. Перемещение по сцене перетаскиванием мышки - вызывается QGraphicsView::centerOn() для новой координаты.

На QGraphicsSvgItem отображаются элементы, которые при изменении зума обновляют свои координаты, а размеры остаются неизменными.

Такая вот кухня.

А теперь необходимо отобразить на графической сцене как бы панель инструментов, которая будет всегда сверху, всегда одного размера. Как этого добиться, при условии, что при перемещении по сцене меняется положение «камеры», да и при зуме тоже координаты «съезжают».

К сожалению в GraphicsScene я не сильна. Какие есть способы организовать это дело, помимо обновления координат панели инструментов после изменения зума и положения камеры?

 , , ,

totik
()

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