mongodb sparse Индексы -- что это такое (и их опасность)

Что это

Sparse-индексы позволяют индексировать не все записи в коллекции, а только в те. в которых реально есть индексируемое поле.
В то время как "не-Sparse" индексы индексируют и хранят все документы коллекции, (используя null, для тех документов, у которых поля нет) -- короче, экономия налицо ;)

Как создать sparse индекс

Создать можно, например, командой:

yii2 unserialize в Yii::trace() непонятно зачем объекты сериализуются

Почему

Yii::trace(print_r($var,true))

может давать нам:

MongoDB\BSON\ObjectID Object (
    [oid] => 58ed00ce1e766679b85a73b7 
)

А

Yii::trace($var) 

может дать (для той же самой переменной) что-то вроде:

php foreach &$value По ссылке -- Опасность и механизм возникновение проблем. Почему работает "не так"

При использовании конструкции foreach со ссылкой на перебиремое значение (как тут) вы можете получить явные и неявные проблемы. Рассмотрим их.

#1 "Зависание" ссылки на последнем элементе массива

На официальном сайте PHP приводится иллюстрация этой проблемы (Внимание Ссылка $value на последний элемент массива останется...):

php foreach Изменение значение элемента массива в цикле при обходе этого массива (по ссылке)

ВНИМАНИЕ: при таком (как ниже) подходе возможны проблемы!

Чтобы не упоминать в теле цикла имя переменной массива можно просто передавать очередное значение (элемент массива) в тело цикла по ссылке, например:

foreach ($clinical['results'] as $key => &$result) {
	$result['positiveCount'] = (int)$result['positiveCount'];
	$result['negativeCount'] = (int)$result['negativeCount'];
}

Перенос строки при использовании fgetc

С.Хольцнер в книге "PHP в примерах" (стр.234) отмечает, что при использовании функции fgetc (посимвольное чтение файлов), необходимо заменять символ окончания строки "/n" на тег

<br>

1. Поясните, пожалуйста, почему. Символ "/n" не распознаётся функцией, как перенос?
2. Почему именно для fgetc?
3. Всегда ли нужно делать это вручную с помощью оператора if (как представлено в примере на стр. 235)?

yii2 MongoDB\BSON\ObjectID -- пишется в базу как строка

Проблема в том, что вызов типа:

$elm['paId'] = new \MongoDB\BSON\ObjectID($elm['paId']);

Приводит к появлению в базе монго строкового значения ужасного вида:

MongoDB\\BSON\\ObjectID(58ed00ce1e766679b85a73b7)

Причина

Судя по всему проблема была связана с обходом массива со ссылкой. По крайней мере, если обходить массив без ссылки, то всё будет нормально.

Call to undefined function app\controllers\clinical\trace()

Call to undefined function app\controllers\ \trace()

просто убедитесь, что правильно вызываете функцию Yii::trace().

yii2 Отладка и запись сообщений в журнал лог (логгирование) -- где их смотреть и как писать

Как писать в журнал

В начале скрипта напишите (подключение класса из корневого пространства имён):

use Yii;

Для отладки используйте вызовы:

    Yii::trace(): //  для отладки значения
    Yii::info(): // для  вывода какой-то  полезной информации
    Yii::warning(): // для ошибок
    Yii::error():  // для предупреждений

Например, посмотрим значение переменной $a:

git set up to track remote branch master from origin -- upstream Установка отслеживаемой ветки (tracking information)

В ответ на команду установки отслеживаемой ветки:

git branch -u origin имяветки

Получаем сообщение (установка отслеживания мастре):

Branch имяветки set up to track remote branch master from origin.

git Удалить ветку (локальную и внешнюю с удалённого реопзитория) -- команды (git branch -d, git push)

Удалить локальную ветку

Удалить локальную ветку можно так:

git branch -d имяветки

Удалить внешнюю ветку

Затем удалить внешнюю ветку можно командой (перед двоеточием должно быть имя локальной ветки, но мы как бы отправляем пустую ветку и потому удалённая затирается ею):

git push origin :имяветки

В ответ вы можете получить ошибку:

Pages

Subscribe to fkn+antitotal RSS