Sunday, December 14, 2014

Пиринговый браузер

Bittorent планирует выпустить браузер базирующийся на использовании пиринга для получения данных с сайтов, возможно такая идея имеет некоторые затруднения:
  1. популярность, нужно получить достаточный процент использования, чтобы выйти на уровень эффективности технологии и как следствие требуются плагины для основных браузеров или модуль проксирования для поддержки остальных браузеров;
  2. при кажущейся приватности: сайт и провайдер теряют к какой-то степени возможность контроля за трафиком, переходя в ранг трекеров, но в тоже время все соседи с которых идет скачивание контента начинают видеть хоть и частично весь трафик. И появляются проблемы с https/http 2.0 - загнать такой трафик в пиринговую сеть сложно так как каждый пакет шифруется ключом зависящим от сессии и как следствие его не расшариш без сессии нужны надежные обходные пути. 

Анонимность номера

Счастье всем даром 
и пусть никто не  уйдет обиженным.
Стругацкие.

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

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

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

Sunday, October 19, 2014

Добавление логотопчика при загрузке

Для пояснения, где эта картинка будет показываться рассмотрим последовательность загрузки телефона:

  1. uboot или другой загрузчик, показывает логотип кампании производителя статическая картинка поменять в теории можно, но нужно понимать как загрузка происходит на низком уровне и иметь возможность изменить radio и hboot разделы.
  2. загрузка ядра и инициализация устройств, можно добавить лого именно сюда и оно  продержится пару секунд до момента старта инита и замены на анимацию загрузки
  3. загрузка инита и монтирования разделов и запуск сервисов  показывается обычная анимация из файла подобного /system/customize/resource/hTC_bootup.zip.


Для того чтобы заменить или добавить логотипчик на 2 шаг нужно сделать такие шаги:

  1. Преобразовать картинку с размером экрана(480x800) в raw формат: convert -depth 8 -size 480x800  ~/Downloads/Tux.png rgb:tux.raw
  2. Собрать програмку конвертор в формат который понимимает ядро: gcc to565.c -o to565
  3. И с конвертировать в нужный формат ./to565  -rle < tux.raw > msmlogo.rle
  4. Положить этот файл в корень ramdisk и проверить включен ли CONFIG_FB_MSM_LOGO. По умолчанию картинка должна имень название initlogo.rle, но в моем случае инит скрипт пытался чтото сделать с этой картинкой, что приводило к ребуту телефона и для избежания конфликта я ее переименовал. 


Sunday, October 12, 2014

Пересборка boot раздела для android

Собираем утилиты для распаковки образов:
git clone git://github.com/CyanogenMod/android_system_core
cd  android_system_core
gcc -o ../mkbootimg libmincrypt/*.c mkbootimg/mkbootimg.c -Iinclude
gcc -o ../unpackbootimg libmincrypt/*.c mkbootimg/unpackbootimg.c -Iinclude

Распаковываем старый образ полученный с обновления или иным путем:
./unpackbootimg -i boot.img
mkdir ramdisk
cd ramdisk/
gunzip -c ../boot.img-ramdisk.gz | cpio -id

В папке с ramdisk меняем части которые нам нужно, разрешаем отладку и отключаем проверки безопасности (при входе под adb сразу root) меняем:
--- default.prop 2014-08-07 22:35:02.481322985 +0300
+++ default.prop 2014-08-07 22:35:18.293601299 +0300
@@ -1,8 +1,8 @@
 #
 # ADDITIONAL_DEFAULT_PROPERTIES
 #
-ro.secure=1
+ro.secure=0
 ro.allow.mock.location=0
-ro.debuggable=0
+ro.debuggable=1
 persist.service.adb.enable=0
 ro.metropcs.ui=0

Соберем ramdisk обратно:
cd ramdisk/
find . | cpio -o -H newc | gzip > ../newramdisk.cpio.gz
cd ..

Упаковываем в новый boot:
cp ../z4u-kernel/arch/arm/boot/zImage .
./mkbootimg --kernel zImage --ramdisk newramdisk.cpio.gz --base 0x3b00000 --cmdline 'no_console_suspend=1 console=null' -o new_boot.img, где 0x3b00000 значение из boot.img-base, no_console_suspend=1 console=null значение из boot.img-cmdline 

Saturday, August 23, 2014

Рекомендации хорошего стиля css/js

Немного рекомендаций хорошего тона для веб-разработки основанных на проблемах с которыми сталкивался когда то давно и уже не правда, но все же чтобы не забыть:

  1. Минимизировать использование модификаторов absolute и zindex, что очень сильно упрощает поиск и изменение стиля и дизайна ведь порядок элементов внутри страницы совпадает с ее внешним видом;
  2. Стараться не использовать фиксированные размеры элементов, и только если это действительно нужно фиксировать только одно направление чтобы было куда увеличивать элемент автоматически не ломая верстку;
  3. Если нужно отредактировать чтобы какой-то элементов стал шире - расширять и родительский если он был фиксированным;
  4. Оставлять достаточный размер по бокам от текста, чтобы было место если будут проблемы с начертанием текста;
  5. Использовать загружаемые шрифты с внешних ресурсов подобных Google fonts с указанием замены из системных шрифтов на случай проблем с сетью;
  6. Грузить библиотеки с cdn (Google cdn) с проверками ошибок и загрузки с локального домена в случае проблем;
  7. Стараться писать стили и разметку максимально структурировано с использованием максимально конкретного описания классов в css и js - на случай если вдруг на странице окажется больше каких то элементов чем вы ожидали и вы сломаете чью то логику и дизайн;
  8. стараться минимизировать обьем js/css кода внутри html кода, так как этот код часто повторяется на других, на страницах и его сложно минимизировать и избегать побочных эффектов;
  9. Не перекрывать чужие классы своими - только дополнять с указанием специфичного для вашего случая класса, так как возможен случай что на странице будут оба типа элементов ваш и оригинальный и вы получите бардак на странице.


Wednesday, August 6, 2014

Права на домашний каталог в debian

Debian стал очень ориентированным на домашних пользователей как и остальные дистрибутивы поэтому права на домашние папки стали 755(rwxr-xr-x), что не очень хорошо если смотреть со стороны безопасности - пользователи на компьютере могут просматривать рабочий стол и документы у других пользователей. На google chrome, настройки и ssh ключи это не распостраняется, так как там стоят более безопасные права. 
Чтобы это решить для новых пользователей нужно запустить: dpkg-reconfigure adduser

Saturday, March 22, 2014

Обновление hboot/radio разделов

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

Для этого нужно заблокировать загрузчик:
$ adb reboot bootloader
$ fastboot oem lock

Иначе обновить не получиться, можно получить ошибку вида:
FAILED ( remote: 99 unknown error)

Перепроверяем версию обновления:
Смотрим на modelid в выводе:
$ adb reboot bootloader
$ fastboot getvar all

Распаковываем обновление(OTA_*.zip) и смотрим файл firmware.zip/android-info.txt Если номера совпали значит можно продолжать.

Устанавливаем обновление:
$ adb reboot bootloader
$ fastboot oem rebootRUU
$ fastboot flash zip firmware.zip 

В консоли может появиться:
FAILED (remote: 90 hboot pre-update! please flush image again immediately)
При эом нужно повторить последнюю команду.

После этого ждем пока в консоли не закончиться выполнение, и перегружаем телефон. Шкала прогресса на экране может не дойти до конца пару процентов, но это нормально.

Разблокируем загрузчик:
fastboot flash unlocktoken unlock_code.bin

Код разблокировки можно получить с официального сайта.