LINUX.ORG.RU

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

 

Посчитать количество чисел, содержащих единицу, на промежутке [1; N]

Слабо вывести формулу? Чтобы в лоб не считать.

upd: загоняние в строку и подсчёт символов тоже не катит. Большие числа типа 10^9 должно считать быстро.

upd2: речь идёт о десятичном представлении числа.

Obey-Kun
()

[postfix] Повторяется доставка одного и того же кривого письма раз в минуту

 

Postfix принимает запросы с 60 виртуальных машин (где перенаправление nullmailer) и шлёт почту. Лог замусорен подобным:

warning: Illegal address syntax from <вырезано цензурой> in MAIL command: <viktormacola@yandex.ru/>

Такое сообщение повторяется раз в минуту. Как быть?

Obey-Kun
()

[loroogle] Маленькая девочка с ухмылкой на фоне сгоревшего дома

 

Помню такую фотографию.

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

Лор, помоги найти эту фотографию, пожалуйста.

Obey-Kun
()

[cmake] QT4_AUTOMOC → QT4_WRAP_CPP

 

Всегда использовал QT4_AUTOMOC, но из соображений совместимости с qmake хочу перейти на QT4_WRAP_CPP.

Можно ли заставить cmake автоматически генерировать список хедеров, содержащих Q_OBJECT?

Obey-Kun
()

Покажите хороших проектов, использующих cmake

Сабж. Немного утомила кривоватость мною написанных cmakelist'ов. Желательно, чтобы проекты эти были на Qt, хотя это, ессно, не обязательно.

Obey-Kun
()

[C++] «Статичный» класс vs набор функций в неймспейсе?

 

Функции в отдельном пространстве имён:

namespace BitParser
{
bool getBitAt(int buffer, int bitIndex) {
    // Реализация
}

// Ещё десяток функций
}

Класс со статичными методами:

class BitParser
{
public:
    static bool getBitAt(int buffer, int bitIndex) {
        // Реализация
    }
    
    // Ещё десяток статичных методов.

private:
    /// Конструктор приватный, ведь такие объекты создавать нельзя.
    BitParser() {}
};

Что лучше и почему?

Obey-Kun
()

Эволюция машинок (новая версия)

http://www.boxcar2d.com/

Теперь может быть разное количество колёс.

upd: кто там интересовался, что за красное число внизу? так это ограничение длины уровня на данной популяции.

upd2: сверху регулировка fps, снизу слева регулировка частоты вращения колёс (последнее изменяет сразу все машинки, т.е. они должны приспосабливаться, хотя больше 50% неинтересно, уж очень быстрые получаются).

Obey-Kun
()

[алгоритмы/либа] Упрощение саморесекающихся полигонов (полилиний). Вычитание/сложение полигонов.

Мне нужно делать написанное в сабже. Причём так, чтобы из саморесекающихся полигонов (полилиний) получалось минимальное количество несамопересекающихся (как будто мы «закрасили» старый полигон и разъединили его по одиноким точкам, если таковые имеются).

Анимированная картинка: http://rghost.ru/4112069/image.png. Стоит учесть, что может получиться и не одна полилиния (например, из «банта» должно получится 2 треугольника).

Хотел было воспользоваться QPainterPath в Qt, но оказалось, что она мне не подходит — по ссылке два примера использования Qt'шного упрощения саморесекающихся полигонов; первый симплифицируется правильно, второй нет, но это там типа не баг, а фича.

Сложение-вычитание, в принципе, не столько важно, ибо в Qt работает как надо.

Obey-Kun
()

[grammar nazi] Отнять или прибавить к... или из?

 

Как правильно? «Отнять или прибавить к» или «отнять или прибавить из»?

Пример применения: «При замыкании прибавляет или вычитает результирующий полигон [из/к] полигон[ов/ам] сцены в зависимости от модификатора.»

Obey-Kun
()

[Qt] Производительность QGraphicsScene. 200,000 статичных итемов и 1 подвижный.

 

Вот ведь ёлки зелёные.

Итак, у меня в сцене 200000 неподвижных прямоугольничков. С ними проблем нету. Всё работает более-менее быстро.

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

Кто-нибудь с таким сталкивался? Боролся? Побеждал?

Obey-Kun
()

Lenovo Thinkpad USB клава с пимпой (55Y9032). Есть владельцы?

Есть владельцы сабжа? Или аналогов.

Obey-Kun
()

[БЕСИТ][KDE4] Сделал баг про KSnapshot

Obey-Kun
()

[ненависть][ненависть!!!] Сайт федеральной службы. Какой он удобный!

 

Федеральная служба по интеллектуальной собственности, патентам и товарным знакам. Программы для ЭВМ, БД.

В третьем пункте дана ссылка. Помечена как «новое!». По ней 404. Мало того, вчитайтесь в url по ней:

http://www1.fips.ru/wps/wcm/connect/content_ru/ru/batonchik/bulochka

«batonchik/bulochka». Да уж.

Это у нас все сайты такие?

Obey-Kun
()

Регистрация программы для ЭВМ в Роспатенте. GPL.

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

Поможет ли это мне как-нибудь, если кто-нибудь в России начнёт нарушит лицензию на эту программу? Может ли быть несколько авторов? Может ли измениться авторский состав после регистрации программы?

P.S.: первая ссылка в гугле по запросу «роспатент GPL» ведёт на ЛОР. Но в том топике не об этом.

Obey-Kun
()

[C/C++] Выравнивание структур. Надо ли париться?

struct LiseElement {
       bool m_isActive;
       char *m_pNext;
       int m_value;
};

24 байта на amd64.

struct LiseElement {
       char *m_pNext;
       int m_value;
       bool m_isActive;
};

16 байт на amd64.

Проводится ли популярными компиляторами (gcc, майкрософтовский компилятор) автоматическая оптимизация порядка данных в структурах, или же это лучше делать вручную? Или использовать pragma pack в критичных классах/структурах?

Obey-Kun
()

[Qt] [хороший стиль] Помогите с планировкой сигнально-слотовой архитектуры проекта. Или не только с ней.

 

Скрин моего проекта.

Можно было бы обойтись без него, но может вы порадуетесь за меня :). Всё пилю и пилю свой проект. Сейчас конкретно занимаюсь рефакторингом. Удалил кучу всего и переделывают это с нуля.

А теперь по теме.

Есть док. В нем расположены всяческие настойки инструмента. На картинке он слева. В зависимости от выбранного инструмента (6 синих иконок) там показываются соответствующие параметры инструмента (как в GIMP и куче других программ).

Есть сцена. В ней пользователь может создавать инструмент. На картинке один из инструментов расположен по центру, зелёненький такой. Разные инструменты характеризуются разными параметрами. Геометрически это всегда или полилинии, или прямоугольники, так что во-первых они характеризуются геометрическими параметрами. Помимо этого, есть и другие параметры, персональные для каждого инструмента. Все они унаследованы от QGraphicsObject, то есть умеют сигналы и слоты.

Когда пользователь создаёт инструмент, нужно:

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

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

Все параметры можно условно разделить на параметры геометрии и параметры конкретного типа инструмента. Значит, можно ввести сигналы-слоты, связанные с геометрией (аргументы QRectF или QPolygonF), и сигналы-слоты, связанные с параметрами конкретного типа инструмента (в качестве аргументов — SelectionParameters, BlockCreatorParameters и т.п.).

  1. Сцена дублирует все сигналы, посылающиеся доком для изменения параметров инструментов. То есть там есть сигналы: setToolGeometry(QRectF), setToolGeometry(QPolygonF), setToolProperties(SelectionParameters), setToolProperties(BlockCreatorParameters), ... Эти сигналы MainWindow в конструкторе соединяет с соответствующими сигналами дока. Инструмент в конструкторе подключает часть из этих сигналов к своим слотам.
  2. Сцена дублирует все сигналы, посылающиеся при изменении параметров инструментов: toolGeometryChanged(QRectF), toolGeometryChanged(QPolygonF), toolPropertiesChanged(SelectionParameters). MainWindow в конструкторе соединяет эти сигналы с соответствующими слотами дока. Инструмент в конструкторе подключает свои сигналы к части сигналов сцены.
  3. Инструмент после налаживания всех связей испускает сигнал needSettings(). Это вызывает испускание сценой сигнала needToolSettings(). Этот сигнал принимается слотом дока emitToolSettings(). В этом слоте док испускает сигналы с настроками выбранного инструмента.

Спасибо всем осилившим сей поток информации! А теперь вопрос. Хороший ли это план, или же вы поступили бы иначе?

Obey-Kun
()

[Большой Проект] Ядро проекта, гуй проекта и исключения.

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

В ядре могут генерироваться ошибки. Например, при парсинге файла могут быть такие ошибки: встречён неправильный символ и встречена неправильная скобка.

В гуе надо такие ошибки отлавливать и показывать окошки и т.п.

Как такое лучше делать?

Obey-Kun
()

[C/C++/...][KDevelop] В продолжение разговора о int *i и int* i; int &i и int& i

 

Я так понял, большинство здесь таки придерживается стиля K&R, то есть прилепляет «*» и «&» к названиям переменных. Я тоже.

Замечательный astyle имеет параметр «--align-pointer» с возможными значениями type/middle/name.

А вот KDevelop в модуле переформатирования кода вообще не поддерживает эту фичу, то есть не трогает «*» и «&» и указателях и ссылках. Но вот при авто-дополнении всегда прилепляет эти значки в стиле Страуструпа, то есть к типу.

Кому не нравится это поведение, просьба проголосовать в https://bugs.kde.org/show_bug.cgi?id=263834.

Obey-Kun
()

[C++][дыра в знаниях] дефолтная инициализация стандартных типов и указателей

 

int num;
//в num может быть мусор?
int *ptr;
//в ptr может быть мусор?

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

Другими словами — в стандарте языка определены стандартные значение для num и ptr?

Obey-Kun
()

[C++] int *i и int* i; int &i и int& i

 

Есть страуструповское решение — он советует использовать int* i.

Что вы можете сказать по этому поводу? Я всегда использовал int *i. То же самое наблюдаю в Qt.

Obey-Kun
()