Sciter 1.0.10.6 - Пропадает img в избранное  новое ответить горячее всё    подписка   модер. 
От: Senyaihttp://www.arseniy.net
Дата: 06.11.11 14:40
Оценка:36 (1)
Приветствую!

Я генерирую картинки с помощью loadImage. Стало очень редко пропадать изображение из тэга img — показывает серый квадратик, хотя src 100% существует. Хотел написать тест для этого случая, но не получилось — получаю AV. Вот тест http://files.rsdn.ru/30591/image_fail_test.zip. Не падает, если в test.html написать for(var i in range(10)), а если for(var i in range(100)) то капут.

Спасибо.
Не бойтесь совершенства. Вам его не достичь. © Сальвадор Дали
Re: Sciter 1.0.10.6 - Пропадает img в избранное  новое ответить    модер. 
От: c-smile экспертhttp://terrainformatica.com
Дата: 06.11.11 18:17
Оценка:6 (1)
Здравствуйте, Senyai, Вы писали:

S>Приветствую!


S> Я генерирую картинки с помощью loadImage. Стало очень редко пропадать изображение из тэга img — показывает серый квадратик, хотя src 100% существует. Хотел написать тест для этого случая, но не получилось — получаю AV. Вот тест http://files.rsdn.ru/30591/image_fail_test.zip. Не падает, если в test.html написать for(var i in range(10)), а если for(var i in range(100)) то капут.


Реально интересный бажик и проблемы с ним связанные, спасибо.

Проблема в моей Array.sort и твоей функции shuffle() которая исполнена как

function shuffle(arr)
{
  for(var j = 0; j < 42; j++)
  {
    arr.sort(:a,b:rand(3) - 1);
  }
  return arr;
}


Я ожидаю что компаратор стабильный — для любых A и B твоя функция вернет одно и то же значение. Сколько бы раз не вызывали.
Но в твоем случае это явно не так — результат (A < B) зависит от фазы луны — не стабильный.

Кстати имплементация такого вот Array.shuffle() есть любимая задачка Гугловских рекрутеров.
Помнится я им был нарисовал вот такое — shuffle in place:
function Array.shuffle() {
  for(var n = this.length; --n > 0;)
  {
    var i = rand(n+1);
    var t = this[i]; this[i] = this[n]; this[n] = t;
  }
  return this;
};


Потом узнал что я по ходу изобрел лисапет http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle