Thursday, October 13, 2011

yac2011

Интересные доклады (http://yac2011.yandex.ru/archive2011/video1/):

  1. http://video.yandex.ru/users/ya-events/view/375/#hq Зачем обычному программисту знать языки, на которых почти никто не пишет. Алексей Воинов, Яндекс
  2. http://video.yandex.ru/users/ya-events/view/377/#hq Разработка приложений для Android на С++. Юрий Береза, Shturmann
  3. http://video.yandex.ua/users/ya-events/view/380/#hq Beyond HTML5. Charles McCathieNevile, Opera Software

Sunday, October 2, 2011

Создание карты для RMaps


Лучший вариант для создания карты это Mobile Atlas Creator. Все достаточно интуитивно и просто выбираешь откуда брать карту(Map Source: OpenStreetMap OsmaRender) и в какой формат сохранять(Atlas Setting:RMaps). На карте справа выбираем область нужную нам. В ZoomLevels - выбираем нужные увеличения для области, в Аtlas Content - нажимаем Add Selection. И нажимаем кнопочку CreateAtlas. Эта последовательность действительна для версии  1.8. В 1.9 - вас спросят о типе результирующего файла сразу при запуске.

 Есть еще SAS.Планета - в ней много опций и карт - но очень не интуитивный интерфейс создание офлайн версий. Первая проще и умет именно то что нужно.

Friday, September 23, 2011

Минимизация страницы

Маленький код для оптимизации страницы при ее отдаче. Хотел добавить прямо сюда - но blogspot портит отображение кода и никакие pre/code не спасают. Поэтому будет iframe:-) Точка входа: html_compress, параметры я думаю понятны без комментариев.

Позволяет убрать все ненужные пробельные символы из страницы. Ключевая особенность - ничего не нужно менять в странице - код может вызываться через ob_start - изменений внутри кода производить не нужно. Можно настраивать, что именно нужно удалять (оптимизировать).

Наиболее подвержено ошибкам минификация js - пришлось подбирать каким кодом можно подчистить js. Основные проблемы - код должен хорошо относиться к ошибкам(особенностям) кода - например не поставленные точка с запятой или запятая в там где не нужно - браузеры их игнорируют, но если убрать из кода все пробельные символы - браузеры уже не могут их разобрать. Остановился на JSMin.

Для css все попроще CSSMin использую не последнюю версию, а немного устаревшую 2.0.2.2 - особых требований нет - главное чтобы не ломало.

Откуда взял начальную версию уже не помню, похоже отсюда.

Также рекомендую обратить внимание на PSS - по описанию его можно использовать вместо CDN с дополнительным плюсом он оптимизирует страницу перед выдачей. И гуглу удобно он всегда получат обновления вашего сайта когда они реально обновились и заходить на него им не нужно.

Wednesday, August 17, 2011

Как быстро проверить работоспособность pptp

Пара простых шагов:
  1. запускаем: netcat {имя вашего сервера} 1723 -vv , если удалось соединиться идем далее, нет - нужно проверить запущен ли pptpd на сервере netstat -nltp, нет ли по пути firewall блокирующего ваше соединение;
  2. создаем настройки соединения с сервером: pptpsetup --create {любое имя для подключения} --server {имя вашего сервера} --username {имя вашего пользователя} --password {ваш пароль на сервере};
  3. и наконец запускаем тестирование соединения pppd call {любое имя для подключения} debug nodetach; 
  4. редактируем файл /etc/ppp/peers/{любое имя для подключения};
  5. ошибки смотрим по описанию ошибок.
Шаги даны для linux.

Saturday, July 16, 2011

Энергозбережения памяти

Современная DRAM требует чтобы с определенной периодичностью на ней вызывался режим регенерации. Каждый N период времени устанавливалась выборка строки и запись этой обратно для обновления значений - так как из-за токов утечки постепенно значение сбрасывается.
Идея:
  1. Для случая когда несколько планок памяти - не используемые планки памяти сбрасываются на минимальную тактовую частоту и отключаются любые обновления и обращения к этой планке. Когда понадобиться эта планка она заново инициализируется на нормальный режим. Думаю это не возможно, так как все планки контролером памяти обрабатываются совместно и использовать разные настройки памяти не возможно, так всегда используются максимальный из доступных на всех планках режим. Можно конечно для энергосбережения понижать настройки у всех планок - но думаю без сброса памяти - это сделать без потери содержимого памяти сейчас нельзя - или я просто не слушал про такой подход к энергосбережению. Хотя возможно можно успеть сменить настройки памяти до следующего цикла регенерации.
  2. Более реалистичный режим - добавить дополнительный бит на каждую строку в чипе памяти - при установленном этом бите все запросы на получение возвращают нули регенерация игнорируется. По умолчанию после инициализации эти биты установлены. при первой попытке что нибудь записать в эту сроку эти биты сбрасываются. Только нужно какой-то дополнительный интерфейс для установки  этого бита во время работы.
  3. и самый реалистичный метод - сбрасывать все неиспользуемые области памяти - по идее на сброшенный строках  во время регенерации тратится минимум энергии.
Но похоже что-то подобное уже реализовано Samsungом, когда обновляется только реально используемая память.

P.S. links:

  1. Partial Array Self-refresh in Linux - читать здесь
  2. POWER EVALUATION OF A HANDHELD COMPUTER
  3. Analysis of the PASR Standard and its usability in Handheld Operating Systems such as Linux

Sunday, June 26, 2011

Мысли o AMD Liano

Нашел достаточно интересное описание новой платформы AMD Liano. И появилось пара интересных мыслей:

Интерсно как измениться энорнопотребление, если убрать полностью поддержку 16/32 режимов - оставить только поддержку 64 битных инструкции, также убрать полностью сопроцессор и все SSE/3dNow инстркции и выполнять их через прерывание, как для случая без сопроцесора. И так как на ядре уже есть видеокарта с 400 процессорами с возможностью использования как вещественною/целочисленую числодробилку на нем и выполнять эти инструкциии.

Тогда процесор будет стартовать в режиме 64 бит, загружать код поддерки остальных режимов и эмулировать их. После нормальной загрузки использовать только OpenCL.

Хотя может сейчас уже процесор в микрокоде не сожержит поддержки старых режимов, а только эмулирует их? При этом 64 режим в микрокоде очень близок к переводу один в один? Но всеже зачем нам SSE, если есть 400 дробилок уже есть - но правда данный будут передоваться через PCIExpress - но доступ к памяти и кешу будет достаточно быстр - они всетаки уже общие.

Частично это навеяно другой платформой: Bulldozer где на ядра 1 блок вещественной арифметики, PowerPC где не поддерживаемые инструкции эмулируются.

P.S. И маленькое уточнение - нашел еще подробности этой архитектуры.

Sunday, June 5, 2011

Управление питанием видеокарты

Есть простенький способ управлять потреблением видеокарты:
echo profile > /sys/class/drm/card0/device/power_method
echo  {auto,high,low,mid} > /sys/class/drm/card0/device/power_profile
где {auto,high,low,mid} - нужный нам режим.

P.S. Маленькое обновление.