Saturday, December 28, 2013

Оптимизация через уменьшение

Лучший код тот, который не написан. 

Очистка html от пробельных символов:

Достоинства: 
  • ускоряет разбор документа на клиентской стороне; 
  • уменьшает размер сжатого deflate результата уменьшая энтропию тегов с символами возле них;
  • экономия места при кешировании; 
  • возможность получения статистики распределения размера встроенных элементов в результате; 
  • возможность смены последовательности тегов для оптимизации отображения. 

Недостатки: 
  • затраты ресурсов на очистку; 
  • дополнительное место для отказа. 

Очистка и объединение файлов css: 

Достоинства: 
  • минимизация кода и удаление пробельных символов как следствие сокращения объёма трафика; 
  • возможность поменять последовательность тегов; 
  • удаление лишних стилей в случае перекрытия частей стиля в последующем коде. 

Недостатки: 
  • возможно усложнение отладки из-за изменений в исходном коде; 
  • дополнительные затраты ресурсов. 

Очистка и объединение файлов js: 

Достоинства: 
  • минимизация кода и удаление пробельных символов как следствие сокращения объёма трафика; 
  • возможность удалить или оптимизировать код; 
  • ускорение работы кода как результат удаления "мертвого кода" и ускорения разбора. 

Недостатки: 
  • возможно усложнение отладки из-за изменений в структуре исходного кода; 
  • дополнительные затраты ресурсов.

Friday, October 25, 2013

Свободная модель мира

Продукт позволяющий создавать 3d карту мира (аналогичный Google Street View или другим подобным продуктам других компаний), но построенный на принципах OpenStreetMap, когда изменять карту может каждый желающий и может при желании создать свой сервис основываясь на исходных кодах этого продукта, может иметь успех из-за таких достоинств:
  • упрощение навигации в местах которые мало интересны крупным компаниям и интересны волонтерам;
  • навигация с изображением, что предполагается увидеть проще, чем плоская карта с ориентацией по компасу и особенностям расположения дороги;
  • расширения возможностей продуктов 'дополненной реальности' картинку с таких устройств можно анализировать на подобность уже существующим в базе изображений с уточнение координат в условиях недостаточной точности GPS c сохранением этих изображений на основном сервисе для уточнения информации и построение более точной модели. Или иными словами - снимается текущая картинка и вместе с текущими примерными координатами отправляется на сервис - там ищется подобная картинка и уточняется точное направление взгляда относительно карты - эти данные передаются обратно и показывается более точное направление движения, чем достигается более точная навигации по абстрактной пересеченной местности - где две дорожки ведущих примерно в том же направлении или находящиеся близко могут вести в различные места с различными условиями передвижения, что важно при езде на велосипеде или пеших походов - где размер дорожки может быть гораздо меньше чем при езде на автомобиле по городу / трассе, когда расстояние между дорожками минимум сравнимо с десятками метров и ошибка в несколько десятков метров не страшна;
  • как исходные данные можно использовать уже снятые фотографии с гео-тегами, или что даст более точную информацию видео с видео регистраторов или action камер с дополнительными треками положений. Использование продуктов дополненной реальности носимых на голове и закрывающий часть обзора скорее всего будет не удобно так как будет только отвлекать при активных перемещениях.
  • подобную систему можно также использовать для виртуальных экскурсий походов по удаленных или по каким-то причинам не доступным местам. Или создания реалистичных видео игр на основе реальных мест;
  • возможность иметь собственный клон сервиса с собственными данными.

Проблемы данного сервиса подобны проблемам игр с масштабными пространствами и картографических сервисов:
  • удобный формат хранения данных с возможностью четкой привязки к местности и достаточной точностью создания объектов;
  • возможность быстрого отсечения не видимых или не значимых на данной увеличении позиции объектов;
  • большие объёмы хранимой информации;
  • отображение на конечном устройстве: различные виды устройств и не полная поддержка WebGL на устройствах;
  • большой объем информации при передаче на устройство;
  • математическая сложность преобразования изображений в 3d модель;
  • преобразование видео сводиться к предыдущему пункту, но имеет один побочный эффект при качественном преобразовании можно в результате получить новое видео с улучшенным качеством изображения и новый формат видео базирующийся на описании позиции наблюдателя и расположения 3d моделей, где отдаленный объекты если в видео встречается этот объект ближе с большим разрешением или качеством, по всему видео будет обладать этими же качествами, что может несколько улучшить качество визуального восприятия;
  • сложность создания моделей объектов что изменяются или изменяют свою позиции между кадрами.

Sunday, October 20, 2013

Уменьшение нагрузки на оптимизирующий прокси

Для уменьшения объёма трафика запрашиваемого с клиента перед/вместо запроса на адрес указанный пользователем делаем запрос на дополнительный информационный сервер с заголовками, характеризующими запрашиваемый контент, но без частей ответственных за привязку к пользователю или сеансу вида исходный адрес и дату последнего обновления или тег с последним обновлением. И если ранее мы уже получали контент с заголовками, четко указывающими на приватность данного контента этот запрос можно не делать. 

Сервер может поступить после этого следующим образом: 
  • вернуть запрашиваемый контент, если он не превышает лимит на передачу данных;
  • вернуть заголовки о том, что контент не изменился; 
  • вернуть возможные зеркала. 


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

Sunday, September 8, 2013

Gnome shell и клавиатура

В новом гноме отключили возможность менять язык по shift + ctrl, теперь нельзя выбрать такую комбинацию. Чтобы ее установить нужно выполнить:
gsettings set org.gnome.settings-daemon.peripherals.keyboard input-sources-switcher ctrl-shift-l 

Saturday, September 7, 2013

Radeon DPM (Linux 3.11)

В последнем релизе ядра появилась переработанная система управления питанием видеокарт radeon.

Что бы протестировать ее нужно:
  1. загрузить последнее ядро отсюда;
  2. обновить файлы прошивок отсюда, в принципе не обязательно на следующих этапах можно обновить из отдельного репозитория, но я делал в таком порядке;
  3. добавить магическую комбинацию в grub radeon.dpm=1
  4. обновить месу если есть желание из отдельного репозитория
Что это дает:
  • автоматическое управление питанием:
    echo {auto, high} > /sys/class/drm/card0/device/power_dpm_force_performance_level
    Старая комбинация может уже не работать так как поменялся метод power_method.
  • можно посмотреть текущее состояние:
    cat /sys/kernel/debug/dri/64/radeon_pm_info
  • получить двукратное увеличение количества кадров в играх;
  • много положительных или не очень эмоций уж как повезет.



Tuesday, August 27, 2013

Почти идеальный виртуальный CDN

Почему почти? Нет в мире совершенства, всегда хочется еще чего-то или забываешь о чем-то.
Виртуальный - потому что нет его как такового только незримое улучшение каких-то характеристик.

Вот несколько неплохих характеристик виртуального CDN:
  • быть посредником между сайтом и конечным пользователем и перепроверять контент, который возвращает сайт пользователю, а действительно ли он поменялся? как поменялся? а можно немного раньше его перезапросить? Может пользователю захочется его загрузить? И заменять все заголовки на правильные полностью зависящие от результата и заголовков клиента;
  • выдавать правильный хеш от контента с адресом куда можно еще обратится про этот хеш;
  • эта отдельная часть может быть как внутри этого посредника, так и дублироваться на клиенте, где указывается хеш контента, откуда он получен и где еще можно поискать;
  • выдавать из каких частей состоит результат, может нам не нужны полный результат, а только его часть, так как все остальное у нас уже есть или у кого-то поближе.

И как результат не весь контент грузится с одного сайта, можно по заголовкам понять может мы это уже откуда-то грузили или можно параллельно погрузить.

Friday, August 23, 2013

Фасеточные фонари

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

Этого же можно добиться заменив в стандартных фарах лампочки или другой излучающий элемент такую конструкцию:
  1. на излучатель виде фасеточного глаза насекомых, содержащего несколько светодиодов с собственными линзами с отдельным управлением каждым светоизлучающим элементом, что позволит освещать только участки и чем на больше количество зон разбиты такие излучатели тем точнее можно регулировать освещённость. Обратную часть излучателя можно сделать не управляемым или просто обеспечивающим не сфокусированный ближний свет, так как они будут использоваться через отражатель плюс линзы на передней части. Но также нужно учитывать ограничение стандартное оптики фары когда невозможно регулировать полное направление света из-за использования дополнительных линзовых элементов на стекле фары заднего отражателя. Задний отражатель используемый в фарах можно не брать во внимание так как отбивает только обратный свет;
  2. две инфракрасные камеры(по возможности);
  3. одну обычную.

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

Использование не полного комплекта:
  • Можно использовать обычную камеру плюс фасеточные излучатели без объёмного датчика для получения примерно равномерного освещения. Объёмный датчик только дает возможность регулировать освещённость для удаленных объектов с повышением их освещённости и минимальную освещённость как ближний свет для прилежащих, также эти датчики можно использовать для того чтобы снизить скорость перед препятствием.
  • Без обычной камеры мы не можем определить общую освещённость и как следствие учесть другое внешнее освещение.

Основное достоинство такой системы отсутствие двигающихся частей и не нужны датчики положения.