LINUX.ORG.RU

Сообщения leonid

 

Поведение QJsonObject::value() и QJsonObject::operator[]

Документация на класс QJsonObject гласит, что разницы между методами нет:

QJsonValue QJsonObject::operator[](const QString & key) const
Returns a QJsonValue representing the value for the key key.
This does the same as value().
The returned QJsonValue is QJsonValue::Undefined if the key does not exist.

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

QJsonObject test; test["entry"] = 42;

qDebug() << "Exists key:";
qDebug() << " - undef?  " << test["entry"].isUndefined();
qDebug() << " - null?   " << test["entry"].isNull();
qDebug() << " - vundef? " << test.value("entry").isUndefined();
qDebug() << " - vnull?  " << test.value("entry").isNull();

qDebug() << "Non exists key (operatopr[] first):";
qDebug() << " - undef?  " << test["entry_1"].isUndefined();
qDebug() << " - null?   " << test["entry_1"].isNull();
qDebug() << " - vundef? " << test.value("entry_1").isUndefined();
qDebug() << " - vnull?  " << test.value("entry_1").isNull();

qDebug() << "Non exists key (value() first):";
qDebug() << " - vundef? " << test.value("entry_2").isUndefined();
qDebug() << " - vnull?  " << test.value("entry_2").isNull();
// Here undefined key will be created with a null value
qDebug() << " - undef?  " << test["entry_2"].isUndefined();
qDebug() << " - null?   " << test["entry_2"].isNull();
qDebug() << " - vundef? " << test.value("entry_2").isUndefined();
qDebug() << " - vnull?  " << test.value("entry_2").isNull();
Exists key:
 - undef?   false
 - null?    false
 - vundef?  false
 - vnull?   false
Non exists key (operatopr[] first):
 - undef?   false
 - null?    true
 - vundef?  false
 - vnull?   true
Non exists key (value() first):
 - vundef?  true
 - vnull?   false
 - undef?   false
 - null?    true
 - vundef?  false
 - vnull?   true

До обращения к несуществующему ключу через оператор [] он действительно считается неопределенным (undefined) и при этом не является нулевым (null), после такого обращения он уже считается определенным и его значение null. При этом в документации указано, что обращение по value() и [] равнозначны и должны возвращать undefined, если ключа нет.

Воспроизводится ли этот баг у вас? Версия Qt 5.5.

 ,

leonid
()

Пропал лоровец

Почти три месяца назад пропала связь со здешним пользователем cx'ом. Есть основания считать, что с ним могло произойти что-нибудь нехорошее. К сожалению, кроме мыла и джаббера с ним никакой связи я не имею, и он нигде не отвечает (хотя через месяц месяц оффлайна его джаббер внезапно перешёл в постоянный away с агентом android.com 1.1).

Если у кого-нибудь из здешних пользователей есть информация о его судьбе, прошу написать в этой теме или, если это недопустимо, на почту raptor.ext [att] gmail.com. Буду очень благодарен.

P.S. Прошу модераторов закрепить тему хотя бы на месяц-другой. Вдруг здесь найдётся кто-то из его знакомых.

 ,

leonid
()

xelatex, eskdx и указание математического шрифта

Можно ли вообще каким-либо образом выбрать математический шрифт при использовании xelatex и eskdx?

Все мои эксперименты провалились: mathspec с кем-то конфликтует, но не не ясно с кем, а unicode-math заставляет xelatex компилировать документ бесконечно долго (вероятно оно просто зависает).

Есть ли истории истории успеха на этом фронте? А то CM очень выбивается из стиля документа и хотелось бы его подменить.

 , mathfont,

leonid
()

texlive 2012 и переход на xetex

Некоторое время назад пробовал перейти на использование xetex (году в 2009), но тогда не устроила ситуация с математическими шрифтами и я бросил это дело.

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

\documentclass[12pt,utf8]{eskdtext}

\usepackage[cm-default]{fontspec}
\usepackage{xunicode, xltxtra}
\usepackage{polyglossia}
\usepackage{xecyr}

\defaultfontfeatures{Mapping=tex-text, Scale=MatchLowercase}
\setmainfont{Liberation Serif}
\setsansfont{Liberation Sans}
\setmonofont{Liberation Mono}

\setdefaultlanguage{russian}

\ESKDdepartment{Акционерное Московское общество}
\ESKDcompany{завод имени И.~А.~Лихачева}
\ESKDclassCode{31 1398}
\ESKDtitle{Форсунка Ф-750}
\ESKDdocName{Технические условия}
\ESKDsignature{АБВГД ХХХХХХХХ}
\ESKDauthor{Петров~И.~И.}
\ESKDtitleApprovedBy{Руководитель ОКБА}{Гусев~И.~И.}
\ESKDtitleAgreedBy{Директор АМО ЗИЛ}{Иванов~И.~И.}
\ESKDtitleDesignedBy{Главный инженер АМО ЗИЛ}{Петров~И.~И}
\ESKDtitleDesignedBy{Руководитель разработки}{Лист~А.~А}


\begin{document}
  \maketitle
  \tableofcontents
  \newpage
  \section{Раздел 1}
    Текст текст текст.
\end{document}

Сборка заканчивается ошибкой:

! Missing control sequence inserted.
<inserted text>
\inaccessible
l.28 \begin{document}

Что необходимо указывать в преамбуле документа, чтобы не возникало таких проблем?

 , ,

leonid
()

Я только что понял, куда делся клуб

http://maxcom.pp.ru/

linux.org.ru - клуб пользователей Linux/Unix

<trololo>даешь клубные правила во всем лоре!</trololo>

leonid
()

Апгрейд FC5 -> FC6 работает?

Похоже на то. На неделе я два десктопа заапгрейдил с федоры 5 на федору 6. Правда апгрейд с последующим апдейтом того, что из extras, занял чуть менее 4-х часов с учетом апдейта того, что было установлено из extras. После этого все работает как и работало до этого включая родное, самосборное и проприетарное. Никаких настроек не потерялось. Дома я уже не глядя просто выбрал в установщике опцию и ушел спать. До этого я устанавливался в соседний раздел и месяц догонял среду руками.

leonid
()

Как заэкранировать `/' для sed?

Есть файл(ы). В нем надо все вхождения `/dir/' заменить на 'dir/' используя `sed s/from/to/ file > file.new'. Вся эта байда должна запускаться из `find -exec', а также в пайпе ` | sed s/f/t/ | ' Промучился час и ничего не добился даже просто запуская sed из комстроки -- никак не могу с косилкой справится. ???

leonid
()

Procmailrc

Господа Прошу помочь с написанием конфы Требуемые условия

1. при совпадении уловий письмо укладывается локальному юзеру, при том что если в поле TO оба условия то письмо дублируется 2. Если условия не совпадают то письмо падает юзеру PARTNER,и только если НЕ совпадают

перепробовал массу вариантов подскажите как правильно задать условия

кусок из конфы

DEFAULT=/var/mail/partner

:0c * ^To:.*market@.* ! market :0c * ^To:.*sales@.* ! sales

Спасибо заранее.

leonid
()

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