Wednesday, May 2, 2012

va_list и gdb

Хорошая штука va_lixt, но под gdb нужно делать страшные комбинации чтобы посмотреть в чем ошибка:
#0  g_logv (log_domain=0x0, log_level=<optimized out>, 
    format=0x406368 "Can not create directory '%s': %s", args1=0x7ffff03a73b8)
    at /build/buildd/glib2.0-2.32.1/./glib/gmessages.c:765
#1  0x00007f483b167172 in g_log (log_domain=<optimized out>, 
    log_level=<optimized out>, format=<optimized out>)
    at /build/buildd/glib2.0-2.32.1/./glib/gmessages.c:792
#2  0x0000000000404e50 in ?? ()
#3  0x0000000000402f38 in ?? ()
#4  0x00007f483ab5f76d in __libc_start_main (main=0x402f20, argc=1, 
    ubp_av=0x7ffff03a7608, init=<optimized out>, fini=<optimized out>, 
    rtld_fini=<optimized out>, stack_end=0x7ffff03a75f8) at libc-start.c:226
#5  0x0000000000402fe9 in ?? ()
#6  0x00007ffff03a75f8 in ?? ()
#7  0x000000000000001c in ?? ()
#8  0x0000000000000001 in ?? ()
#9  0x00007ffff03a7d19 in ?? ()
#10 0x0000000000000000 in ?? ()
(gdb) p *(char **)(((char *)args1[0].reg_save_area)+args1[0].gp_offset)
$8 = 0x113b720 "/var/lib/lightdm/.config/dconf"
(gdb) p *(char **)(((char *)args1[0].reg_save_area)+args1[0].gp_offset+8)
$12 = 0x113c000 "Permission denied"
Но может это просто я неправильный вариант просмотра нашел?

Sunday, April 29, 2012

Минимизация страницы Python

​Аналогичный по задачам, но реализованы по другим принципам на Python код минимизации страницы. Продолжение предыдущего поста с реализацией на php. Главное отличие от предыдущей версии здесь мы разбиваем потоковый парсером html и на обрабатываем содержимое тегов. Для сжатия стилей и скриптов используется внешний код для минимизации из webassets.

Sunday, March 18, 2012

Erlang?

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

Saturday, March 17, 2012

Ice Cream Sandwich on Desire HD

Решил проверить как продвигается CM9 - пока не очень.

Используя версию чистого CM9 на основе инструкции- не загрузилось :-( Анимация при загрузке зациклилась, а как смотреть лог загрузки для андроида не понятно. Если есть желание повторить нужно загрузить: repo init -u git://github.com/CyanogenMod/android.git -b ics и добавить в system/.repo/manifests/default.xml репозитории:

  1. project path="device/htc/ace" name="CyanogenMod/android_device_htc_ace"
  2. project path="device/htc/common" name="CyanogenMod/android_device_htc_common" revision="refs/heads/gingerbread"
  3. project path="device/htc/msm7x30-common" name="CyanogenMod/android_device_htc_msm7x30-common"
  4. project name="koush/proprietary_vendor_htc" path="vendor/htc"

Версия собранная специально для этой модели запустилась - единственное отсутсвует приложение для радио и при записи видео приложение вылетает.

Обновление exif

Обновление информации о снимке на основе имени файла используя exiftool. Устанавливает коментарий на основе имени каталога, даты на основе имени файла и устанавливает имя устройства с которого сделана фотография.
Более простая версия использующая jhead - может устанавливать только даты и коментарий.

Saturday, February 18, 2012

MESH телефончик

Идея для маленькой программки - полурация - полуmesh сеть :-) В принципе уже есть аналог http://www.servalproject.org/ - вобщем-то, если верить описанию всем хорош - можно звонить без сети, можно передавать файлы, слать SMS. Программа может сама управлять сетью, но она мне кажется не удобной - слишком много функционала или мне просто хочется создать свой велосипед - единственное, что не удобно для отправки SMS используется, как я понял, внешняя сеть и SMS будет отослан через http://code.google.com/p/websmsdroid/ веб-сайты. Основной проблемой как по мне является не возможность аутентифицировать звонящего - так как можно спокойно менять свой номер. Другим аналогом может быть http://sipdroid.org/ - все хорошо - но нужно постоянное соединение с интернетом и регистрация SIP аккаунта.

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

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

Saturday, February 4, 2012

OpenWRT

Интересная сборка OpenWRT:-) Прям мечта...

  1. svn co svn://svn.openwrt.org/openwrt/branches/backfire backfire
  2. wget http://downloads.openwrt.org/backfire/10.03.1/brcm63xx/config
  3. mv config backfire/.config
  4. cd backfire 
  5. make
  6. смотрим каталог bin/brcm63xx/


И все:-) Конечно можно зайти и по настраивать: make menucofig

Но куда уже проще:-) Ставить пока не пробовал, ADSL функционала что-то все нет....