Friday, December 16, 2011

Android и вирусы


Андроид стал очень популярной системой под него есть вирусы и их даже не нужно компилить:-) Правда они пока ориентированы на невнимательность пользователя - так как нужно подтвердить установки и если не включено разрешение установки пакетов не из Android Market(Application Settings -> Unknow sources) - то вообще установку выполнить нельзя. Но вообще это очень положительный момент - значит эта операционная система очень популярна среди пользователей.

Это произведение хорошо определяется DrWeb (можно установить из маркета бесплатно). А вот clamav не захотел определять как вирус :-(

 По заголовкам пакета это произведение хотело сказать что оно опера:-)

Sunday, November 6, 2011

Мелочи о Radeon и не только

В автоматическом режиме никогда не устанавливается минимальный уровень потребления по умолчанию, если судить по сообщению на сайте freedescktop причина прозаична некоторые карты после этого не работают.

Гибридная графика(когда используеться несколько карт для вывода изображения) потехоньку продвинулась удалось вывести картинку на монитор с динамическим  подключением - теперь при подключении нового экрана (иммено нового экрана а не вывода текущей видеокарты) создаеться новый экран на который копируется область памяти с видеокарты.

Разработчикам MESA и Gnome удалось достигнуть интересного прогресса в разработке программного рендеринга, теперь его можно будет использовать для стандартной верии третьего гнома требующего поддержки OpenGL обещают еще проработать и ускорить его чтобы при подключении програмного рендеренга использовался немного упращенные эфекты когда видеокарта не тянет. Также собитаються создать упрощенную программую реализацию DRI модуля для случая когда нет реальной видокарты или поддердки 3d ускорения на уровне видокарты чтобы через нее выполнять простейшие операции копировани проецирования областей памяти для вывода изображения и избежать лишнего копирования данных. 

Разработчики Ubuntu обсуждают возможность создания абстрактого интерфейса скрывающего реальный вариант интерфейса OpenGL (OpenGL 2.0 vs  OpenGL ES) и подключающего нужный вариант или эмулируя нужный вариант на уровне этого интерфейса - это позвоит использовать упрошенную версию когда полная реализация не нужна или не возможна. 

Android Air Scanner

Создал маленькое приложение под Android. Основной смысл его это получить уровни сигналов и видимость передатчиков для все доступных для Android видов источников. Интерфейс у приложения отсутствует - есть только большое текстовое поле - с которого нельзя копировать.
  • Для мобильных вышек, WiFi получить оказалось не очень сложно, пришлось конечно по разбираться в документации, но все же. 
  • Для общей статистики по подключениям тоже удалось получить какую-то информации - вообщем-то сомнительной ценности, что там нужно мне пока не понятно - вывожу чтобы было. GPS почему не хочет выдавать видимые спутники и включаться.
  • Bluetooth,NFC- я пока решил не трогать они уж очень близкого действия.
  • FMRadio - непосредственно в классическом андроиде поддержки нет. Есть сторонние реализации с интерфейсом которых я не разбирался - GPS интереснее пока. 
Жаль только что в эмуляторе работает только общая информация о сети - WiFi не включается и сеть(точнее не полная эмуляция сети, можно получить только оператора) никаким образом не эмулируеться.

Saturday, October 29, 2011

ScriptCoverage

Гугл открыл код нового расширения для своего браузера показывающего какой код вызывался, правда в необычной манере. На главной странице проекта нет ссылки на загрузку дополнения и инструкции как установить, сразу идет ссылка на загрузку кода. Но в вики проекта есть описание как его запустить и в коде есть скрипт с примечательным названием build.py. Краткая инструкция как его запустить:

  • Грузим исходник:
    $ git clone https://code.google.com/p/script-cover/
    Cloning into script-cover...
    remote: Counting objects: 47, done.
    remote: Finding sources: 100% (47/47), done.
    remote: Total 47 (delta 12)
    Unpacking objects: 100% (47/47), done.
    
  • Запускаем сборку, подгружаются не достающее исходники(используется closure compiler), и все собирается:
    $ cd script-cover/
    $  python build.py 
    Running command: svn checkout http://closure-library.googlecode.com/svn/trunk/ closure-library
    Running command: java -jar SoyToJsSrcCompiler.jar --shouldProvideRequireSoyNamespaces --outputPathFormat build_gen/src/coverage_report.soy.js src/coverage_report.soy
    Running command: java -jar SoyToJsSrcCompiler.jar --shouldProvideRequireSoyNamespaces --outputPathFormat build_gen/src/popup.soy.js src/popup.soy
    Running command: closure-library/closure/bin/build/closurebuilder.py --root=src --root=closure-library --root=build_gen --output_mode=compiled --output_file=build/content_compiled.js --compiler_jar=compiler.jar --input=src/scriptLoader.js --input=src/instrumentation.js --input=src/startTool.js
    Running command: closure-library/closure/bin/build/closurebuilder.py --root=src --root=closure-library --root=build_gen --output_mode=compiled --output_file=build/background_compiled.js --compiler_jar=compiler.jar --input=src/showCoverageHelper.js --input=src/background.js
    Running command: closure-library/closure/bin/build/closurebuilder.py --root=src --root=closure-library --root=build_gen --output_mode=compiled --output_file=build/inject_compiled.js --compiler_jar=compiler.jar --input=src/backgroundInteraction.js
    Running command: closure-library/closure/bin/build/closurebuilder.py --root=src --root=closure-library --root=build_gen --output_mode=compiled --output_file=build/popup_compiled.js --compiler_jar=compiler.jar --input=src/popup.js --input=src/background.js
    
  • В хроме выбираем Tools->Extensions(или chrome://extensions/) , включаем Developer Mode и выбираем загрузку не упакованных расширений и выбираем папочку build.
  • После этого расширения появляется в toolbar-е и мы немного ждем результатов анализа - и радуемся:-)
  • И выключаем его после теста чтобы не занимался не нужным анализом.

ADSL все еще не opensource

​Как много изменилось с предыдущего поста на эту тему. К этому модему уже научились припаивать второй USB порт, вторую антенн, COM и WAN порт. Жаль только что ADSL все нет, хотя частично есть спецификации и есть часть не GPL исходного кода c прошивок других устройств(об этом можно почитать на форуме OpenWrt).

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

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. Маленькое обновление.

Sunday, May 22, 2011

Google Chrome - 2

Обнаружил пару интересный настроек: about:flags и включил пару интересных флагов:

  • GPU Accelerated Compositing
  • GPU Accelerated Canvas 2D


Маленькое изменение результатов с этими флагами:

  • chrome - CPU1 - 60% , CPU2 - 80%, GPU - 11%, FPS - 32-36
  • chrome, linux, WebGL on - CPU1 - 30% , CPU2 - 90%, GPU - ?, FPS - 17-19
  • chrome, linux, WebGL off - CPU1 - 50% , CPU2 - 80%, GPU - ?, FPS - 1

Saturday, May 14, 2011

Google Chrome

Обнаружилось что WebGL в chrome под linux отключен, про отключение ff слышал, про хром както пропустил. Причем отключен он только для radeon и intel.

Проверить это очень легко вводим about:gpu и если видим что-то подобное: ATI cards in Linux are crash-prone. То усилием воли закрываем все вкладки и перезапускаем с 'google-chrome --ignore-gpu-blacklist' и радуемся новым впечатлениям :-)

И немного тестов рыбками из демок под ie:
  • ie9 - CPU1 - 8% , CPU2 - 10%, GPU - 40%, FPS - 60
  • chrome - CPU1 - 40% , CPU2 - 90%, GPU - 10%, FPS - 35
  • chrome, linux, WebGL on - CPU1 - 30% , CPU2 - 90%, GPU - ?, FPS - 15
  • chrome, linux, WebGL off - CPU1 - 50% , CPU2 - 80%, GPU - ?, FPS - 16
  • ff 4.0, linux, WebGL off - CPU1 - 75% , CPU2 - 75%, GPU - ?, FPS - 60
В тестах использовал 20 рыбок. Нагрузку на GPU измерял в AMD System Monitor, которая есть только под Windows. Тест представляет собой движение спрайта по канвасу(в ресурсах есть картинка c полной анимацией движения рыбки).

Sunday, May 8, 2011

Еще пара мелких оптимизаций

Использование более удобный для кеширование url(пример для Apache):
  • создаем папочку с файлом .htaccess:
    RewriteEngine On
    RewriteRule ^/?(.*)/(.*)$ /$1?$2 [L]
  • И запрашиваем все файлы из нее по url вида имя папки/нужный ресурс/старый путь относительно корня/параметры вызова - в результате получим, что то подобное /img/avatar.sh?user=1 => /stat/img/avatar.sh/user=1.
И возможность заставить всех ходить через https без перенаправления - стоит пользователю один раз зайти через https - и в течении указаного в заголовке Strict-Transport-Security времени браузер обязан сам заменять все запросы к http на https без запроса к серверу. То есть человек один раз делает запрос на http - мы его перенаправляем на https, и уже на запрос по https мы ему указываем что в течении определенного времени делать запросы только на https.

Wednesday, January 12, 2011

Кувалда и душа

Брел сегодня по улице - вижу двое ремонтируют забор, что они все таки делают? Если у нас с одинаковым успехом и главное видом (очень страшная гримаса), могут использовать кувалду для настройки и ремонта микроэлектронной техники, так и для добычи из оной ценных блестящих побрякушек.