Monday, October 24, 2011

Графики на html таблицах

Маленький js код для показа графиков как html таблиц(чтобы выглядело как обычная картинка). Реализация рисования на canvas не столь интересна - так она работает не во всех броузерах - а так любой браузер может показать график с выключенной погрузкой картинок и возможно даже так мы экономим для простых картинок трафик:-)

Инструкция по установке Selenium на Windows

  • Скачать с http://seleniumhq.org/download/ Selenium Server и запустить 'java -jar selenium-server-standalone-2.8.0.jar' и запустить, должно написать что-то вида:
    18.10.2011 12:00:46 org.openqa.grid.selenium.GridLauncher main
    INFO: Launching a standalone server
    12:00:46.970 INFO - Java: Sun Microsystems Inc. 20.1-b02
    12:00:46.980 INFO - OS: Windows XP 5.1 x86
    12:00:47.020 INFO - v2.8.0, with Core v2.8.0. Built from revision 14056
    12:00:47.440 INFO - RemoteWebDriver instances should connect to: http://127.0.0.
    1:4444/wd/hub
    12:00:47.440 INFO - Version Jetty/5.1.x
    12:00:47.450 INFO - Started HttpContext[/selenium-server/driver,/selenium-server
    /driver]
    12:00:47.450 INFO - Started HttpContext[/selenium-server,/selenium-server]
    12:00:47.450 INFO - Started HttpContext[/,/]
    12:00:47.571 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@110b05
    3
    12:00:47.581 INFO - Started HttpContext[/wd,/wd]
    12:00:47.631 INFO - Started SocketListener on 0.0.0.0:4444
    12:00:47.631 INFO - Started org.openqa.jetty.jetty.Server@1027b4d
    
  • Установить python http://www.python.org/download/ Python 2.7.2 Windows Installer
  • Установить PIP. Нужно запустить http://python-distribute.org/distribute_setup.py затем https://raw.github.com/pypa/pip/master/contrib/get-pip.py . И запустить  
    C:\Python27>python.exe get-pip.py
    Downloading/unpacking pip
      Downloading pip-1.0.2.tar.gz (105Kb): 105Kb downloaded
      Running setup.py egg_info for package pip
    
        warning: no files found matching '*.html' under directory 'docs'
        warning: no previously-included files matching '*.txt' found under directory
     'docs\_build'
        no previously-included directories found matching 'docs\_build\_sources'
    Installing collected packages: pip
      Running setup.py install for pip
    
        warning: no files found matching '*.html' under directory 'docs'
        warning: no previously-included files matching '*.txt' found under directory
     'docs\_build'
        no previously-included directories found matching 'docs\_build\_sources'
        Installing pip-script.py script to C:\Python27\Scripts
        Installing pip.exe script to C:\Python27\Scripts
        Installing pip-2.7-script.py script to C:\Python27\Scripts
        Installing pip-2.7.exe script to C:\Python27\Scripts
    Successfully installed pip
    Cleaning up...
    
  • Установить Selenium:
    C:\Python27>Scripts\pip.exe install -U selenium
    Downloading/unpacking selenium
      Downloading selenium-2.8.1.tar.gz (2.9Mb): 2.9Mb downloaded
      Running setup.py egg_info for package selenium
    
    Downloading/unpacking rdflib==3.1.0 (from selenium)
      Downloading rdflib-3.1.0.tar.gz (249Kb): 249Kb downloaded
      Running setup.py egg_info for package rdflib
    
    Installing collected packages: selenium, rdflib
      Running setup.py install for selenium
    
      Running setup.py install for rdflib
    
    Successfully installed selenium rdflib
    Cleaning up...
    
  • Проверить работоспособность скрипта http://pypi.python.org/pypi/selenium#example
  • Соединение между сервером тестирования (jar апплет) и скриптом тестирования(python) идет по обычному http так что запуск браузера можно проверить и без скриптов.

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