среда, 28 мая 2008 г.

Flash, JavaFX, Silverlight, Flex

В эпоху достаточной конкуренции среди одинаковых веб услуг, появление модного слова AJAX показало, что пользователи хотят видеть веб сайты не просто информативными, но с красивым гуевым интерфейсом. Осознав это, компании, практически одновременно, принялись "первыми" выкидывать на рынок или просто разрабатывать новую технологию которая непременно же должна заменить HTML и сделать internet application'ы не просто Rich, а как я услышал в одном докладе на SUN'вской конференции прямо таки Filthy Rich! И все это под open source. Ну прям таки не жизнь, а мед грядет. За что я люблю веб over обыкновенное приложение (пусть оно хоть трижды filthy like a whore):
1. Любую вэб страницу я могу отмасштабировать (увеличить или уменьшить шрифт).
2. Выключить стили мега дизайнера нахрен.
3. Сохранить отдельную страницу.
4. Поставить ссылку на отдельную страницу.
5. Вернуться на пару страниц назад.
6. Окно можно растянуть или сжать не в ущерб содержимому. При этом браузер все красиво переформатирует.
7. И т.д.

Все это конечно же можно реализовать и плагином, но я уверен, что 90% RIA сайтов делать этого не будут. Короче все это бред и лажа. По крайней мере в том виде в котором оно сейчас есть в виде флэша или ему подобных технологий.

Что я точно не понимаю, так это стратегию компании SUN. Ну ладно, хрен с ними с апплетами. Проипали они это поле битвы. Но почему бы в джава плагин не встроить нативно API для интеграции с DOM и Javascript? Модифицировать DOM дерево страницы браузера вроде бы можно, но я так и не нашел, читая javadoc, способа, как например из java повесить свой java handler для onclick или другого event'а какого-то узла этого DOM дерева. Сдается мне, что все на что хватает интеграции из коробки - удалять/добавлять узлы DOM дерева. Есть сбоку LiveConnect, но во первых он сбоку. А во-вторых что с event'ами сходу не понятно, но вроде как есть надежда. Ну чтож, хрен с ними с евентами, может что-то и получилось бы. НО!! Компания САН уже несколько лет не в состоянии выпустить плагин под 64 битные платформы (с 2004го кажется)... и обещают они выпустить java plugin к 2009г. Какие нахрен апплеты, какие RIA..?

А всего-то. Была бы в джаве вместо всей этой мега-графической мега-херни для создания мега-никому-не-нужных-грязных-апплетов возможность работать с деревом DOM и событиями - небыло бы необходимости в виде костылей GWT (компиляция из ограниченного сабсета Java в Javascript), потому как это java код напрямую бы работал и делал все, что сейчас делается на JS. Те же GWT виджеты и т.д. все бы было, но с отладкой прям в браузере, мониторинг по JMX и прочие прелести разработки и отладки java standlone, но в вебе. Такое чувство, что в сан только и могут языком трепать и евангелистов разбрасывающих дюков по миру катать.

А пока пойду попробую GWT 1.5rc1...

понедельник, 19 мая 2008 г.

OWFS 2.7p4

Нашел багу в OWFS 2.7p4. Немного криво написанная блокировка приводила к обращению к уже освобожденному участку памяти. Проявлялось через 1сек-5мин (как повезет) при паралелльном обращении к датчикам: owfs выключалась либо молча либо с сообщением функции tsearch из glibc о поврежденном списке. GDB помог не сильно. Valgrind помог весьма - отличная тулзень, давно ей пользуюсь.
==16965== Thread 9:
==16965== Invalid read of size 4
==16965== at 0x405F7A5: LockGet (ow_locks.c:142)
==16965== by 0x4066195: FS_r_given_bus (ow_read.c:229)
==16965== by 0x40663B2: FS_read_distribute (ow_read.c:191)
==16965== by 0x40668AD: FS_read_postparse (ow_read.c:106)
==16965== by 0x4066AEA: FS_read (ow_read.c:58)
==16965== by 0x409E26D: fuse_fs_read (in /usr/lib/libfuse.so.2.7.3)
==16965== by 0x40A2A12: (within /usr/lib/libfuse.so.2.7.3)
==16965== by 0x40A5F48: (within /usr/lib/libfuse.so.2.7.3)
==16965== by 0x40A6EAF: (within /usr/lib/libfuse.so.2.7.3)
==16965== by 0x40A86D5: fuse_session_process (in /usr/lib/libfuse.so.2.7.3)
==16965== by 0x40A4AD4: (within /usr/lib/libfuse.so.2.7.3)
==16965== by 0x40C8382: start_thread (in /lib/libpthread-2.7.so)
==16965== Address 0x43b8dc8 is 0 bytes inside a block of size 16 free'd
==16965== at 0x402465C: free (vg_replace_malloc.c:323)
==16965== by 0x41B281A: tdelete (in /lib/libc-2.7.so)
==16965== by 0x405F62B: LockRelease (ow_locks.c:164)
==16965== by 0x40662AD: FS_r_given_bus (ow_read.c:236)
==16965== by 0x40663B2: FS_read_distribute (ow_read.c:191)
==16965== by 0x40668AD: FS_read_postparse (ow_read.c:106)
==16965== by 0x4066AEA: FS_read (ow_read.c:58)
==16965== by 0x409E26D: fuse_fs_read (in /usr/lib/libfuse.so.2.7.3)
==16965== by 0x40A2A12: (within /usr/lib/libfuse.so.2.7.3)
==16965== by 0x40A5F48: (within /usr/lib/libfuse.so.2.7.3)
==16965== by 0x40A6EAF: (within /usr/lib/libfuse.so.2.7.3)
==16965== by 0x40A86D5: fuse_session_process (in /usr/lib/libfuse.so.2.7.3)

Пропатченная версия работает уже 2 часа без проблем. Если до вечера доработает без ошибок напишу в mailing list owfs.

Патч.

P.S. Valgrind показал мемори ликов на 4кб. Надо будет глянуть.. это конечно не 4мб, но если там не дебри, то почему бы не пофиксить...

суббота, 17 мая 2008 г.

!@#@#$@#$

3 часа строить АЧХ на тупой RC фильтр в Altium Desginer пытаясь понять, почему расчетное f=1/RC не работает для R=4.7M и C=2.2uF.. Чтобы потом выяснить, что в нем приставка мега пишется как Meg, а не M. А M на самом деле означает мили... Дошел до этой мысли подставив 4_700_000 вместо 4.7M на третьем часу ударов головой о стену..

воскресенье, 27 апреля 2008 г.

Linux: Thread Priorities in Java

Грустно мне. Приоритеты нитей в linux джава игнорирует.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4813310

Update: Решение кажется нашел. Разберусь до конца опишу подробнее.

пятница, 18 апреля 2008 г.

1-Wire

В понедельник пришли датчики и адаптеры для организации 1-wire сети. Сегодня протестил датчик температуры - работает :). Правда я вначале протупил и подключил у DS18S20 только две ноги - землю и данные, а оно мне сообщает температуру 85 градусов и не грама больше или меньше. Проипался минут 30, пока случайно в спецификации не заметил, что если дополнительное питание на DS18S20 не подается, то ногу питания надо на землю кидать, а не оставлять болтаться в воздухе. OWFS завелся с пол пинка, приятная софтина и продуманная.

На правах рекламы. Термодатчики покупал на радиорынке - это единственное, что там было. А потом USB адаптер и прочие датчики заказал на http://www.hobby-boards.com очень рад. Хороший магазин, занимающийся продажей элеметнов для умного дома: цены НИЖЕ чем если брать у местных поставщиков (мне вообще только один отозвался), достаточно оперативный и приятный магазин.

воскресенье, 6 апреля 2008 г.

Ускорение JRobin 1.5.8

Уже наверное месяц назад написал патч для JRobin и сегодня вот запостил его в sourceforge для этого проекта. Патч увеличивает производительность раз наверное в 10 при интенсивном использовании CDef'ов и как минимум раза в 1.5 для графиков без CDef'ов. Не знаю включат этот патч в проект или нет - мне пофигу. Также патч расширяет возможности класса Plottable позволяя реалзиовывать графики аналогичнее CDEF'овым, но значительно мощнее и быстрее. Помимо всего этого, имеется возможность рисовать поверх графика все что угодно.

Патч

Sun Tech Days 2008

Сьздил в Питер на сабж. В очередной раз убедился, что на таких конференциях мне делать нечего. Мне нужно на net ехать - я там ничего не знаю. А конференции по Java...? Похоже в области java я и так достаточно осведомлет о всяких там фрэймфорках типа GWT, DOJO, WICKET, JPA, о новинках в Java 5, Java 6, Java 7 на том уровне на котором об этом рассказывают на конференциях. Практически ничего нового я нигде не узнал. Хорошое снотворное - прям какбудто всю ночь учил экзамены.

Из интересных докладов для себя: java hotspot. bpel (хоть я мало че понял), G1.

Пару слов про организацию мероприятия. Жесть. Прям как на концерт Moonspell или Cradle Of Filth. В здание пускали по 10 человек а потом 10 минут перерыва. Перед входом толпа и давка. Внутри очереди на регистрацию и девочки с формами (и в фирменной сановской форме). Везде непрерывно раздавали бланки для участия в викторинах или просто опросники за которые давали призы или сувениры. Мне было вломы заполнять всю эти простыни поэтому я уехал из Питера без: нового рюкзака с логотипом Сан, кружки с логотипом Сан, плюшевого Дюка, футболки и дисков с солярисом.

А вообще хорошо отдохнул. Прям отпуск непредвиденный :). Питер и вправду весь серый. Но только он серый не потому, что старый или построен из строительных материалов такого оттенка. НЕТ. Просто он весь в пыли. Пыль кругом: на стенах, на поручнях, на асфальте, в воздухе...