LINUX.ORG.RU

Сообщения unC0Rr

Не получаю enterEvent

Форум - Development

Нужно получить события прихода и ухода курсора для сцены. Поскольку для сцены нужных событий нет, делаю потомка от QGraphicsView:

class DrawMapView : public QGraphicsView
{
    Q_OBJECT

public:
    explicit DrawMapView(QWidget *parent = 0);
    ~DrawMapView();

    void setScene(DrawMapScene *scene);

protected:
    void enterEvent(QEvent * event);
    void leaveEvent(QEvent * event);

private:
    DrawMapScene * m_scene;
};

DrawMapView::DrawMapView(QWidget *parent) :
    QGraphicsView(parent)
{
   setMouseTracking(true);

    m_scene = 0;
}


DrawMapView::~DrawMapView()
{

}

void DrawMapView::setScene(DrawMapScene *scene)
{
    m_scene = scene;
    qDebug() << "setScene" << m_scene;

    QGraphicsView::setScene(scene);
}

void DrawMapView::enterEvent(QEvent *event)
{
    qDebug() << "enterEvent" << m_scene;
    if(m_scene)
        m_scene->showCursor();

    QGraphicsView::enterEvent(event);
}

void DrawMapView::leaveEvent(QEvent *event)
{
    qDebug() << "leaveEvent" << m_scene;
    if(m_scene)
        m_scene->hideCursor();

    QGraphicsView::leaveEvent(event);
}

leaveEvent срабатывает как положено, enterEvent - нет. Похожие проблемы не гуглятся, потому спрашиваю здесь: что я делаю не так?

Метки: ,

()

Что-то вроде perfect hash

Форум - Development

Нужен алгоритм создания хэша по заранее заданным значениям, с коллизиями по заданным значениям. На входе числа не более 255, на выходе не больше 2^32 (желательно 2^8 или хотя бы 2^16, но непринципиально).

Пример:

вход       выход
1..4,25    9001
5,17,19    31337
8..12      100500
37         0

Естественно, входные диапазоны не пересекаются.

На ум пока приходит только построение КНФ, но может есть что-то с менее громоздким результатом?

UPD: Функция должна хорошо ложиться на C, хотелось бы обойтись без перечисления десятков "case x:" для диапазонов.

Метки:

()

Стирательная резинка

Форум - Development

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

Метки: ,

()

Добавление в избранное перекидывает на первую страницу

Форум - Lor-source

Собственно, всё описано в заголовке. Хоть и мелочь, а пусть оставляет на той же странице, я ещё не дочитал тред.

()

3D фильм не в нужном формате

Форум - Multimedia

У меня есть фильм в формате "кадр для левого глаза в верхней половине изображения, для правого - внизу", стереоочки red-cyan. Вопрос: можно ли посмотреть фильм mplayer'ом без предварительного перекодирования? Если да, то как?

()

Hedgewars 0.9.17

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

Вышла новая версия пошаговой стратегии Hedgewars (похожие игры: Worms, Warmux, Artillery, Scorched Earth).

Новое в этом релизе:

  • Новая тема Cave
  • Новая озвучка Hillbilly
  • Боты научились пользоваться переключением ежей. Теперь не так просто справляться с ордами ботов, как раньше!
  • Множество небольших улучшений во фронтенде, касающихся страницы миссий и чата
  • Лёд. Покрывает мосты и балки на зимних темах (Snow и Christmas)
  • Взрывы воздействуют на траекторию полёта гранат, мин и других снарядов
  • и другие небольшие улучшения

>>> Подробности

Метки: ,

()

[GCI] Hedgewars

Форум - Talks

Проект Hedgewars утверждён для участия в Google Code-in как одна из всего лишь 18 организаций. Спешите принять участие!

Новость: http://google-opensource.blogspot.com/2011/11/google-code-in-2011-participating....

Сайт GCI: http://www.google-melange.com/gci/homepage/google/gci2011

()

Hedgewars 0.9.16

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

Вышла новая версия пошаговой стратегии Hedgewars (похожие игры: Worms, Warmux, Artillery, Scorched Earth).

Новое в этом релизе:

  • Скачиваемые дополнения. Звуки, шапки, карты, темы, переводы, музыка, скрипты могут быть скачаны дополнительно.
  • Стереорендеринг.
  • Изменяемый размер окна.
  • Новые утилиты. Будка времени удалит ежа из игры на некоторое время, предотвращая возможность его убийства. Распылитель земли поможет построить мост, закрыть дыры или просто усложнить жизнь врагам.
  • Новые скрипты для одиночной и многопользовательской игры.
  • Изменения в старом оружии. Скорректированы сверлящий удар, соблазнение и огонь. Добавлены мины-пустышки. Верёвка снова может цепляться за ежей, ящики и бочки, гранаты теперь имеют изменяемую силу отскока. Портальная пушка более полезна в полёте.
  • Новая тема Гольф, множество новых шапок, добавлена украинская локализация голосовых сообщений.
  • Новые режимы игры: режим эстафеты команд, в котором 2 команды имеют общее время для нанесения совместного удара и режим границы по всей карте (ранее в воде не могло быть границы)
  • и множество других мелких улучшений

>>> Подробности

Метки: ,

()

[TCP] Перезапуск сервера

Форум - Development

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

Пробовал закрывать слушающий сокет и запускать вторую копию, но она ругается на уже занятый порт. Запрос к гуглу, выдающий релевантную инормацию, не смог придумать. Как правильно организовать такой перезапуск?

()

[Qt][PostgreSQL] QSqlRelationalTableModel и VIEW

Форум - Development

Есть у меня такая табличка

CREATE TABLE marks
(
  id integer NOT NULL DEFAULT nextval('marks_id_seq'::regclass),
  workdate date NOT NULL,
  personpositionid integer NOT NULL,
  reasonid integer NOT NULL,
  hours numeric(4,2) NOT NULL,
  planmarkid integer,
  <тут всякие ключи>
)

В программе создаётся QSqlRelationalTableModel для редактирования таблицы, с одним отношением вида

setRelation(3, QSqlRelation("workers.reasons", "id", "name"))

Записи создаются, редактируются и удаляются на ура, всё замечательно.

Но понадобилась дополнительная функциональность со стороны базы данных, для чего исходная таблица была переименована в marks_table, и был создан VIEW вида

CREATE OR REPLACE VIEW marks AS 
 SELECT marks_table.id, marks_table.workdate, marks_table.personpositionid, marks_table.reasonid, marks_table.hours, marks_table.planmarkid
   FROM marks_table;

с правилами на INSERT, UPDATE и DELETE, которые замечательно работают при отправке запросов в базу напрямую. Но программа почему-то начала вести себя странно: отображение данных и добавление элемента через QSqlRelationalTableModel работают, а вот удаление и редактирование записи спотыкаются с такими ошибками:

SQL query error: "ERROR:  column "name" does not exist
LINE 1: ...D "workdate" = $2 AND "personpositionid" = $3 AND "name" = $...

и

SQL query error: "ERROR:  syntax error at or near "("
LINE 1: EXECUTE  (1504, '2011-02-07', 2574, 'Я - Продолжительность р...

Куда вообще копать? С точки зрения программы в базе данных должна быть всё та же прежняя таблица marks, я неоднократно пользовался таким приёмом, правда не использовал QSqlRelationalTableModel, только QSqlTabelModel, с которой не возникало никаких проблем при работе с view.

()

[KDE4] Текущая погода

Форум - Desktop

В стандартном виджете, показывающем текущую погоду за окном, не могу найти свой город Архангельск, в КДЕ3 такой проблемы не было. Есть ли какие-нибудь альтернативные виджеты или сайты с погодой?

()

[Haskell][TCP сервер]Чтение из закрытого сокета/хендла

Форум - Development

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

Чтобы воспроизвести проблему я запускаю сервер, захожу неткатом на него, отсылаю строки ["QUIT", "1", "2"] и пустую строку, завершающую пакет. Сервер реагирует на это отключением клиента с сообщением ["BYE", "1"]. Далее запускаю некат и повторяю действия, и тут начинаются "чудеса". Поясню, как работает сервер: на каждого клиента заводятся потоки (forkIO) на приём и на отправку, общающиеся с основным потоком через Chan-ы. Таким образом, на приём работает что-то вида

forever (hGetLine handle >>= \msg -> writeChan chan $ Message (clientId, msg))
Поток висит на hGetLine, и при получении строки отсылает её ядру сервера. При отключении клиента по идее он должен просто отваливаться с исключением.

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

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

()

Hedgewars 0.9.13

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

Вышла новая версия пошаговой стратегии Hedgewars (похожие игры: Worms, Wormux, Artillery, Scorched Earth).

Новое в этом релизе:

  • Множество новых шапок
  • Взрывающиеся бочки
  • Более умные боты (избегают огня, научены некоторым новым видам оружия)
  • Новая озвучка (с британским акцентом)
  • Звуковое оповещение, когда игроки заходят в комнату
  • Подсказка по оружию при использовании меню оружия
  • Новые режимы игры: расстановка ежей, режим с королём, случайный выбор очерёдности первого хода, общее оружие между командами в альянсе
  • Просмотр меню оружия во время чужого хода (удобно для планирования своих ходов)
  • Мины-пустышки
  • Флаги
  • Визуальные эффекты: пыль при ударе после падения, дым, использованные патроны, мигание ярлыка с именем команды при переходе хода, анимация доставания оружия ежом и многое другое
  • Показ значка полученного оружия при взятии ящика
  • Звук ходьбы ежей
  • Краткая информация о правилах игры при старте
  • Новые карты, темы, шаблоны для генерации карт (в том числе лабиринты)
  • Поддержка lua для создания тренировок и миссий

>>> Подробности

Метки: ,

()

Hedgewars 0.9.12

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

Вышла новая версия пошаговой стратегии Hedgewars (похожие игры: Worms, Wormux, Artillery, Scorched Earth).

Новое в этом релизе:

  • Новое оружие: летающая тарелка, коктейль Молотова
  • Новые звуки, визуальные эффекты, обновления графики
  • Внутрикомандный чат
  • Добавлены две тренировки
  • Раскраска сообщений в чате
  • Новые карты, темы
  • Огромное множество мелких улучшений

>>> Подробности

Метки: ,

()

Hedgewars 0.9.11

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

Вышла новая версия пошаговой стратегии Hedgewars (похожие игры: Worms, Wormux, Artillery, Scorched Earth).

Новое в этом релизе:

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

>>> Подробности

Метки: ,

()

Hedgewars 0.9.10

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

Вышла новая версия пошаговой стратегии Hedgewars (клон червячков).

Новое в этом релизе:

  • Новые шапки, карты, темы
  • Удаление небольших групп пикселей, оставляемых огнём
  • Вчетверо большие карты, до 48 ёжиков в игре
  • Режим с границами карты
  • Увеличена скорость отрисовки, появился режим "ухудшенного качества", уменьшающий требования к системе
  • Новые настройки игры, схемы настроек
  • Генератор команд
  • Утилиты (лазерный прицел, слабая гравитация и др.)

>>> Подробности

Метки: ,

()

Новый релиз ReactOS 0.3.6

Новости - OpenSource
Группа OpenSource

Эта версия, равно как и все остальные из серии 0.3.x, находится в "альфа" стадии разработки, так что не ждите от релиза слишком многого. ReactOS 0.3.6 — это продукт концентрации текущей разработки на исправлениях ошибок, улучшении совместимости и стабильности. С момента предыдущего релиза прошло более тысячи коммитов в svn-репозиторий ReactOS.

>>> Подробная версия списка изменений.

Наиболее важные изменения:

  • Поддержка других архитектур: улучшения в ARM-версии, начало поддержки архитектуры x64.
  • Уменьшение необходимой загрузчику FreeLdr памяти для загрузки ReactOS.
  • Возможность выгрузки драйверов.
  • Множество исправлений и улучшения ядра (доставка APC, таймер, большая работа над архитектурно-независимыми частями менеджера памяти).
  • Поддержка большего количества Win32-приложений благодаря исправлению реализации кучи в RTL (например, инсталляторы, основанные на InnoSetup, приложения Delphi, и др.).
  • Исправления ошибок и устранение утечек памяти в сетевом стеке.
  • Дальнейшее развитие подсистемы Win32, большинство библиотек DLL режима пользователя синхронизированы с Wine.

>>> Новость

Метки: , , , , ,

()

Hedgewars 0.9.4

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

Вышла новая версия пошаговой worms-like стратегии Hedgewars 0.9.4.

Изменения:

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

>>> Страница скачивания

Метки: , ,

()

Вышла ReactOS 0.3

Новости - OpenSource
Группа OpenSource

Через 10 месяцев после предыдущего релиза вышла ReactOS 0.3. Напомним, такой большой перерыв связан с дестабилизацией работы команды, вызванной скандалом вокруг якобы использовавшихся при разработке "грязных" методов реверс-инжиниринга. В настоящий момент проведён аудит почти всего кода, и разработка продолжается полным ходом.
Среди важнейших изменений в версии 0.3:
- Проведена большая работа над поддержкой DirectX
- Импортированы OHCI и UHCI драйверы из Linux, теперь ReactOS поддерживает USB клавиатуры и мыши
- Исправлено множество ошибок смены контекста потоков
- Автоматический поиск и установка драйверов
- Возможна автоматическа установка, не требующая интерактивного взаимодействия
- Значительно увеличено быстродействие за счёт множеста изменений в ядре

Следует отметить, что ReactOS по-прежнему носит статус alpha и не пригоден для повседневного применения.

>>> Подробный changelog

()