Или до обновлялся теперь 3d работает быстрее, но появились очень интересные особенности: в QuakeII мигает отображение, в кубе втором отсутствуют стены и пол. В общем еще немного подождать и все будет работать. Надеюсь ждать осталось недолго.
P.S.S.: При отключении эффектов рабочего стола QuakeII не мигает и нагрузка не процессор значительно меньше(сейчас любое 3d приложение сильно нагружает процессор).
Идеи приходящие в голову. Надеюсь они кому-то помогут. Заранее благодарен за комментарии.
Sunday, February 7, 2010
Hybrid graphics on linux
На этой неделе произошло очень интересное событие в руки разработчика драйверов под ATI попался ноутбук с гибридной графикой, и он решил решить такое обидное состояние, что под linux переключение не работает. В общем лед тронулся. Надеюсь скоро появиться полная поддержка таких конфигураций под linux(ранее только собирали слепки конфигураций)
Если судить по информации, что я имею:
Если судить по информации, что я имею:
- эта технология нормально работает только в Vistе - есть нормальные драйвера и поддержка производителей ноутбуков;
- для XP отсутствует поддержка в графической системе переключения;
- Seven - есть только сентябрьский драйвер находящийся в вечной бете - хотя вполне рабочий, но вечно удаляемый системой, так она считает его устаревшим и без вопросов удаляет. И работает только самая слабая видеокарта и на второй стоит отметина проблемы инициализации. И если в биосе переключить нельзя - то никак уже не подключишь.
P.S. Hybrid graphics(оно же: PowerXpress(ATI), HybridPower(Nvidia)) - это когда системе присутствует более одной видеокарты и при смене нагрузки или питания происходит переключение видеокарты: при низкой нагрузке работает интегрированная видеокарта с низким потреблении энергии, если нужна большая производительность или дополнительные выходы(HDMI например, хотя для основных они могут кросится и сами, работает мощная, но вывод идет через выходы более слабой) включается более мощная.
И еще пара ссылок:
symfony
- Получить в форме значение поля - работает в обоих случаях для нового объекта установили значение по умолчанию (через setDefault) и в случае редактирования существующего объекта: $form['имя поля']->getValue();
- Если нужно получить значение от select с установленным multiple нужно чтобы имя заканчивалось [] иначе получим только первое значение вместо списка.
Thursday, January 14, 2010
Особенности WebKit
Обнаружил интересную особенность браузеров удостоенных на WebKit: если js функции вызываются не в порядке объявления, то возникает исключение при попытке их вызвать на обработку события(Uncaught ReferenceError: somefunc is not defined). В ff все работает нормально он может вызывать функции, если они объявлены в другом порядке(хотя бы в одном файле).
Причиной по моему мнению является: (хотя бы для Chrome звучит правдоподобно) попытка браузера перед выполнением(на этапе парсинга) перевести весь js во внутренний байт код - в результате чего он может сразу выявить и заменить вызовы функций на их адреса и проверить корректность кода с проверкой корректности использования свойств объектов. (Выдать ошибку, если у объекта не какого-то свойства к которому обращаются - то есть: есть проверка типов для объектов с однозначно определяемым типом).
Пояснение об изначальных данных - была страница на которой не срабатывали нажатия на кнопки в Safari, при однозначном возврате из функции(alert('A');return;) до вызова функции идущего ниже по коду все работает, без возврата исключение при вызове функции(сообщается что функции не определена).
P.S.: В обычном состоянии исключения не показываются нужно открыть окно отладки(инспектор элементов).
Sunday, December 13, 2009
3D ускорение на radeon3200
Включение 3d ускорения на r600 для ubuntu 9.10 Karmic Koala.
Добавляем в дополнительный источник в репозиторий:
- xorg-edgers. Это позволит установить последнюю версию mesa.
Версия установленная по умолчанию имеет одну неприятную особенность отсутствует библиотека поддержки r600, хоть версия mesa 7.6 уже содержит поддержку. Но установка полной версии, в моем случае ничего не дала - только отключила поддержку программного рендеренга и выдавала ошибку рендеренга - неправильный порядок пакетов. В новой версии эта проблема решена.
- и установить новое ядро отсюда:
2.6.32, для 64 битной платформы нужно установить пакеты:
- linux-headers-2.6.32-020632-generic_2.6.32-020632_amd64.deb
- linux-headers-2.6.32-020632_2.6.32-020632_all.deb
- linux-image-2.6.32-020632-generic_2.6.32-020632_amd64.deb
- linux-headers-2.6.32-020632-generic_2.6.32-020632_amd64.deb
Как результат 1432.709 FPS в glxgears, и glxinfo:
direct rendering: Yes OpenGL vendor string: Advanced Micro Devices, Inc. OpenGL renderer string: Mesa DRI R600 (RS780 9612) 20090101 TCL OpenGL version string: 1.5 Mesa 7.7-rc2.
Но пока в quake2 играть с opengl нельзя достаточно чувствительно притормаживает. Но прогресс очевиден:-)
Sunday, November 29, 2009
Иcправление DTD
Некоторые пакеты генерируются документацию через xmlto которая в свою очередь проверяет xml на валидность, иногда там прописаны более новые файлы чем установленные в дистрибутиве, чтобы исправить это мелкое неудобство можно использовать такой скриптик:
list=`grep 'OASIS//DTD DocBook XML V4.4' * -r | sed 's/:/ /' | awk '{print $1}'| grep '.xml'`
for file in $list
do
sed -i 's/DTD DocBook XML V4.4/DTD DocBook XML V4.2/' $file
sed -i 's/http\:\/\/www.oasis-open.org\/docbook\/xml\/4.4\/docbookx.dtd/http\:\/\/www.oasis-open.org\/docbook\/xml\/4.2\/docbookx.dtd/' $file
echo 'fix for '$file'done'
done
Friday, November 27, 2009
symfony мелкие советы
Создание меню загрузки файлов:
Создаем простое текстовое поле(logo например) для хранения пути файла и в наследнике от автоматически созданной формы в функцию configure дописываем:$this->widgetSchema['logo'] = new sfWidgetFormInputFileEditable(array(
'label' => 'Attachments',
'file_src' => '/uploads/'.$this->getObject()->getLogo(),
'is_image' => true,
'edit_mode' => !$this->isNew(),
'template' => '
%input%
%delete% %delete_label%
%file%
',
));
$this->validatorSchema['logo'] = new sfValidatorFile(array(
//если указан путь, то кроме проверки еще и сохраняет,
//путь относительно uploads
'path' => sfConfig::get('sf_upload_dir').'/',
'required' => false,
'mime_types' => 'web_images'
));
$this->validatorSchema['logo_delete'] = new sfValidatorPass();
создание дополнительной проверки по полю(не стандартной):
Добавлять туда же:$this->validatorSchema['name'] = new sfValidatorAnd(
array(
new sfValidatorCallback(
array('callback'=>
array($this->getObject(), 'check')
)
),
$this->validatorSchema['name'] /*previous value*/
)
);
В модели создаем дополнительную функцию check вида:public function check($validator, $value) {
if(haveError($value))
throw new sfValidatorError($validator, $message);
}
return $value;
}
для проверки более чем одного поля одновременно:
(Приходят все поля после проверки по каждому полю отдельно):form:
$this->mergePostValidator( new sfValidatorCallback(
array('callback'=>
array($this->getObject(), 'check')
)
model:
public function check($validator, $values) {
if(haveError($values))
throw new sfValidatorError($validator, $message);
}
return $values;
}
sfPropelPager
Особенность в sfPropelPager - при подсчете количества страниц он сбрасывает поля группировки - результат может быть больше чем реально существует.Формирование сложных запросов:
Нахождение имени в нескольких полях:
select * from people where (name like ('%abc%') ) OR (last_name like ('%abc%') );
Выглядит таким образом:
$name = $c->getNewCriterion(PeoplePeer::NAME, '%abc%', Criteria::LIKE); $last = $c->getNewCriterion(PeoplePeer::LAST_NAME, '%abc%', Criteria::LIKE); $last->addOr($name); $c->addOr($last);
Основная особенность нужно объединить сначала части запроса, а уже потом добавлять в основной запрос.
Subscribe to:
Posts (Atom)