Thursday, May 21, 2015

Датчик освещения

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

DDOS vs CDN

Текущие методики чистки трафика от паразитного как то DDOS или накручивание счетчиков представляют собой правила на блокирование трафика по регионам адресов и дополнительные проверки на живость пользователя через капчи даже скрытое от пользователя когда браузер сам высчитывает какую-то магию или проверку на какие-то специфичные свойства браузера - куки в local storage или флеше, теги в кешируемом содержимом.
Эти способы имеют не очень приглядные особенности - заблокировав людей по принципу присутствия включенного js или флеша, сразу отбрасывают людей с выключенным js или если сбойнул какой-то код или мобильных пользователей с альтернативными браузерами. При этом желающих обойти эту проблему решение лежит на поверхности - разобраться что куда ставиться и с эмулировать или запустить эмуляцию всего браузера и или если есть доступ к банерной системе - грузить этот сайт вместе со своим банером на пользовательских системах.
При ограничении трафика по адресу вы сразу отбрасываете пользователей с этого региона и теряете часть добросовестных пользователей, в случае тора для сайтов связанных с образовательной деятельностью или обсуждающих какие-то проблемы общества - мы теряем наиболее активных пользователей которым из-за ограничение трафика провайдером или из желания сохранить конфиденциальность своих интересов от третьих лиц.
Возможным решением таких проблем было бы максимальная кешируемость страниц с информацией с попыткой по максиму использовать CDN и лимитация трафика по объёму по регионам и выполнение проверок на живость только на этапе заполнения форм, когда js уже может быть жизненно важен для работоспособности.

Sunday, April 12, 2015

Vulkan или новый шанс

На данный момент реализация OpenGl для линукс отстает от последней версии на пару лет, расширения из новой версии присутствуют, но официальной поддержки четвертой версии так и нет. Есть на это две причины:
  1. intel который делает ставку на open source и постепенно реализует все версии opengl в полном объеме, но еще не опубликовал код с поддержкой этой версии;
  2. независимым разработчикам не интересно реализовывать расширения которые не являются популярными и реализуют только те части которые им кажутся нужными.
Также amd работает над драйвером для ядра который можно использовать для обоих реализаций графики: для проприетарных драйверов и открытого кода. Это позволит без обновления кода в ядра использовать проприетарные дрова с любым ядром, а для открытого кода возможность всегда иметь поддержку всех новых чипов и постараться получить максимально полную реализацию всех возможных стандартов.
Но существует шанс получить реализацию стандарта несколько быстрее: новая версия OpenGL Vulkan - базируется на открытых стандартах и должна иметь референсную реализацию всех частей для проверки валидности рендеринга. Особенность данного стандарта заключается в том что он пересматривает все традиции современного OpenGL, если традиционно библиотека полностью скрывает внутреннюю реализацию взаимодействия с видеокартой и сама следит за опустошением буферов и синхронизацией, то новый стандарт предоставляет программисту самому следить за буферами и дает абстракцию к буферам видеокарты и памяти максимально низкоуровнево и как следствие получаеться, что программист должен сам контролировать заполненость буферов и выделение памяти, ошибки не проверяються перед отправкой в устройство. И основой нового стандарта послужила API Mantle от AMD.
В результате доступно такие виды взаимодействия:
  1. апи описания памяти и флаги как обрабатывать эту память с отображением в виртуальную память процессора или использовать только внутреннюю память устройства реализуется через выбор пула памяти и характеристик сегмента;
  2. описание опкодов Spir V виртуальной машины базирующемся на байткоде llvm.
Valve c Intel уже имеют реализацию данных драйверов написанный LunarG, который они обещают полностью открыть в момент полного открытия стандарта.

Sunday, March 22, 2015

SSD performance

SSD диски SAMSUNG 840 EVO имеют неприятную особенность деградации производительности - по изначальной спецификации скорость чтения записи должна быть на уровне 400-450 Mb/s, но современем скорость падает до 100Mb/s. Или совсем запущенные случаях до 30 для случая 0,5Tb записвнных блоков для 240Gb диска. 
Возможные причины данного поведения: 
  • скрываются во внутренней структуре дисков когда диск состоит из TLC памяти и треть которой используется как кеш в виде SLC, что позволяет ускорить работу диска. Как следствие метод ускорения перенести в этот кеш наиболее часто используемые области;
  • не достаточно эффективная работа TRIM для записи информации нужно полностью очищенные области памяти так как перезапись нескольких байт не поддерживается в флеш памяти;
  • особенности процесса поддержки равномерного износа ячеек когда каждая следующая операция записи идет в следующий очищенную область памяти и при падении заряда в ячейках памяти при чтении эти данные переносятся в новую область а старая переноситься в буфер свободных областей и так по кругу. 
  • особенности чтения многоуровневой памяти - когда уровень заряда памяти постепенно падает и нужно несколько раз прочитать информацию с различными уровнями усиления пока не совпадут контрольные суммы. 

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

Для запуска этой утилиты с usb диска нужно подготовить флешку таким образом: 
  1. скачать freedos и записать на флешку;
  2. скачать утилиту для восстановления производительности Performance Restoration Software и записать на тот же диск;
  3. загрузиться с флешки без загрузки драйверов и запустить утилиту, скопированную на предыдущем шаге;
  4. выключить компьютер, не перегружаться, а именно выключить. Это нужно чтобы все буферы сбросились и диск перечитал прошивку. ( freedos поддерживает poweroff команду ). 

После этих действий производительность возвращается в заявленные производителем рамки. Для быстрой проверки можно запустить: hdparm -tT /dev/sda

Wednesday, March 4, 2015

Логичность

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

Thursday, February 26, 2015

Душа и лужа

Является ли идея переливать лопатой из лужи, которая возле твоего входа, в лужу, которая по среди дороги уже похожая на общую, спецификой здешних мест, или это общепризнанное решение для неровной дороги, лужайки или асфальта? Технологию рыть рвы на дороге чтобы туда сливалась вода из протекающего водопровода и водостока пока оставим на потом:-) Иногда весело понаблюдать за подобными процессами, как берут лопатой набирают воду и несут 10 метров с очень серьезным и важным видом, подобным я спасаю человечество, но яму возле входа не заделывают в течении нескольких лет.

Wednesday, February 25, 2015

Выбор без вариантов

Попытки пользователей купивших телефон создающих петиции производителю относительно выпуска обновления или открытия исходников с большой вероятностью ни к чему не приведут. Компания уже продала телефон и у нее как таковой нет причин обновлять устройство на новую версию android, максимум обновить текущую прошивку с исправлением ошибок или закрыть какую-то прореху в безопасности позволяющую получить повышенные права и установить или заменить часть прошивки. 
По сути открытие кода ядра как единственной части системы которая требует открытия по лицензии никоим образом не гарантирует возможность изменений в прошивке. Так как загрузчик может быть заблокирован и скорее всего он не будет загружать не подписанные особым образом ядра или иметь не стандартные протоколы для загрузки элементов прошивки.
Как побочный эффект есть неоднозначность, или иметь прошивку без проблем безопасности или иметь проблемы с безопасностью, но благодаря таким обходным путям иметь возможность заменить прошивку. 
И получается, что иногда производители позиционируют телефон как не флагманский через установку не последней версии android, установки не самого мощного в линейке процессора или экрана меньшей диагонали или забыть установить какой-то датчик. Что не так страшно по пользовательским ожиданиям, иногда даже в значительно степени повышает пользовательскую ценность и если есть возможность установки обновленной прошивки последней версии, то пользователь получает почти идеальное устройство, так как нивелирует ограничения установленные производителем.