Ограничение 30 секунд на MySpace
А с каких пор на MySpace ограничивают музыку тридцатью секундами? Это первоапрельская шутка, или что?
А с каких пор на MySpace ограничивают музыку тридцатью секундами? Это первоапрельская шутка, или что?
При компиляции этого кода выводится неправильный результат:
#include <QtCore/QList>
#include <QtCore/QtAlgorithms>
#include <QtCore/QtDebug>
int main()
{
QList<int> vec;
// vec.end(); // (1)
qDebug() << (vec.end() != qFind(vec, 4));
qDebug() << (qFind(vec, 4) != vec.end());
}
true
false
Если раскомментировать строку (1), сделать контейнер непустым или использовать QVector, выводится правильный результат. При использовании второго варианта qFind(vec.begin(), vec.end,...) программа работает правильно.
Это я что-то делаю неправильно, ошибка в Qt или документированное неопределенное поведение?
Вот так вот выглядит Gnome 3, запущенный не в виртуалке. Пока делал скрины - оценил удобство Gnome Shell'а. Косяков тоже хватает, например диалог открытия файла в Firefox выглядит очень странно. Возможно все не так плохо, как показалось после запуска Gnome 3 в VirtualBox.
>>> Просмотр (1280x1600, 828 Kb)
У меня возникла странная проблема. Есть каталог ~/tmp, куда я сваливаю разный мусор. Каждый день по крону запускается такая команда:
find ~/tmp ! -type d -ctime +10 -delete
find . -mindepth 1 -depth -type d -empty
т.е. удаляются файлы с датой изменения старше 10 дней и пустые каталоги. Недавно я обнаружил что уже давно лежит каталог «~/tmp/gcc-1.21/libtemp» с файлами, и никак не удаляется. Дата модификации файлов ~1987 год, дата изменения точно совпадает с датой последнего запуска крона. При запуске скрипта вручную ctime обновился еще раз, но больше обновлятся не хочет (наверное времени мало прошло). Может ли find каким-то образом менять ctime файлов?
Здесь описан способ отладки подсчета ссылок в GObject. То есть нужно в каком-то месте остановить программу и командой set присвоить переменной g_trap_object_ref значение нужного объекта. Проблема в том, как получить доступ к static-переменной в файле gobject.c. Такой способ не работает:
set 'gobject.c'::g_trap_object_ref = my_object
Left operand of assignment is not an lvalue.
Есть ли смысл при программировании на шаблонах применять хвостовую рекурсию?
Например, что лучше:
template <int n>
struct Fac
{
enum { result = n * Fac<n - 1>::result };
};
template <>
struct Fac<0>
{
enum { result = 1 };
};
или
template <int n>
class TailFac
{
template <int counter, int mul>
struct TailFacIter
{
enum { value = TailFacIter<counter - 1, mul * counter>::value };
};
template <int mul>
struct TailFacIter<0, mul>
{
enum { value = mul };
};
public:
enum { result = TailFacIter<n - 1, n>::value };
};
Даст ли второй подход меньшее потребление памяти и большую скорость компиляции?