Friday, September 25, 2009

AutoRunnableDemo

длинный коммент к этому посту

public class AutoRunnableDemo {

static interface AutoRunnable extends Runnable { }

static aspect Runner {
void around(): target(AutoRunnable) && execution(* run(..)) {
(new Thread() { public void run() { proceed(); } }).start();
}
}

static class AutoRunnableImpl implements AutoRunnable {
public void run(){
try{
Thread.currentThread().sleep(1000);
}catch (InterruptedException e) {}

System.out.println("inside AutoRunnableImpl.run() " +
"curentThread name: " +
Thread.currentThread().getName());
}
}

static class RunnableImpl implements Runnable {
public void run(){
System.out.println("inside RunnableImpl.run() " +
"curentThread name: " +
Thread.currentThread().getName());
}
}

public static void main(String[] args){
System.out.println("inside Demo.main(...) curentThread name: " +
Thread.currentThread().getName());

(new AutoRunnableImpl()).run();
(new RunnableImpl()).run();
}
}

компилируется и запускается с помощью (установить aspectj):
ajc -cp aspectjrt.jar AutoRunnableDemo.java
java -cp .:aspectjrt.jar AutoRunnableDemo

наиболее вероятный результат выполнения:
inside Demo.main(...) curentThread name: main
inside RunnableImpl.run() curentThread name: main
inside AutoRunnableImpl.run() curentThread name: Thread-0

Wednesday, September 16, 2009

о lotus symphony и о табах

Попробовал сегодня IBM Lotus Symphony -- офисный пакет одной известной компании. Был приятно удивлен. Он построен на эклипсе! Хотя после аудио плеера на эклипсе меня это уже не шибко удивляет :) Попробовал я его ради интерфейса с табами (scrennshots) и это действительно круто. Из альтернатив, насколько я понял для msoffice есть неофициальный плагин для работы с табами в одном окне, а для OO есть только плагин работающий с веткой 2.x но не 3.x.
О табах.
Их поведение мне не нравится практически везде. Я привык использовать комбинации Alt+ для перескока на таб по номеру, Ctrl+PageUp/PageDown для переключения на соседнюю табу, скроллинг для переключения между табами, расположение табов на нескольких строчках (если не вмещаются в одну) и кнопку закрытия на каждом табе.
Chrome -- все пункты кроме multiline tabs. для браузера мне это критично. я по 50 табов открываю в порыве страсти.
Ff без TabMixPlus вообще ужасен и неюзабелен, с ним я его терплю.
В opera, наверное, можно настраивать hotkeys, но по дефолту нет ничего. Multiline ужасен. Не настраивается ширина и на моем разрешении только 6 табов в строчку (в ff -- 12).
В eclipse есть Ctrl+PgUp/PgDown. возможно есть multiline. Тут я без него терпимо обхожусь. Очень не хватает скроллинга по табам и Alt+.
В lotus symphony нет всех хоткеев, прям как в опере. Multiline не изучал.

Sunday, September 6, 2009

Transaction isolation

Сегодня у меня день твиттера.
Transaction Isolation in Google App Engine тут с картинками и мало текста про интересную заковырку с read commited в gae.
Transaction Isolation in PostgreSQL тут без картинок и текста побольше про read commited & serializable transaction isolation levels. с примерами чего стоит опасаться.
MySQL пока ниасилил.

Длина имени файла

Ограничения на длину файла в виндовых ФС (fat, ntfs) и в ФС MacOS (HFS+) -- 255 UTF-16 символов, а в большинстве ФС *nix систем (ext3, ext4, jfs, zfs, xfs) -- 255 байт (256 байт для ext4). Хотя reiser4 не следует этому правилу, у него -- 3976 байт. Это так, в тему того что может приплыть вам от пользователя =)
Источник -- википедия + проверено опытным путем для fat, ntfs & ext3.

Saturday, September 5, 2009

Слепой Пью

Все вероятно помните этого героя. Я не ужержался и спросил гугла и яндекса, считают ли они имя несчастного слепого глаголом. Считают. Запрос "слепым пить" находит только его.
Машинам еще есть что подправить перед восстанием, а нам пока стоит опасаться восстания наших же багов.

Friday, September 4, 2009

морфология

Тестировал google и yandex на распознавание форм слова. Придумал хорошую проверку -- знают ли поискавики что слово "есть" это не только инфинитив но и личная форма глагола "быть" (и еще куча всего) -- дал им запрос "есть в будущем". Справились. Оба нашли тексты содержащие фразу "что будет в будущем". Это та мелочь с которой не справятся поисковые алгоритмы основанные на стеммерах. Про людей которые просто включают запрос пользоваталя в LIKE '%..%' я вообще молчу.
P.S. Ищу библиотеку морфологического анализа русского языка на java. JNI + С++ не предлагать =)