понедельник, 19 октября 2009 г.

eLisp и .emacs

Подрихтовал тут свой .emacs

А заодно доделал несколько полезных на мой взгляд функций которых не
нашел в стандартной комплектации. Точнее они в том или ином виде есть
но нет в том виде в каком я хочу. А еще я начал(о ужас!) проникаться
лиспом. Мне все больше и больше импонирует этот странный язык.

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



(defun my-extract-word ()
(interactive)
(backward-word 1)
(setq 1 start (point))
(forward-word 1)
(setq end (point))
(buffer-substring start end))

(defun my-highlight-phrase ()
(interactive)
(highlight-phrase (my-extract-word) 'hi-yellow))

(defun my-occur ()
(interactive)
(occur (my-extract-word)))

(defun my-grep ()
(interactive)
(setq tmplist (split-string buffer-file-name "\\."))
(grep (concat
"grep -n "
(my-extract-word)
" "
(concat "*." (nth 0 (last tmplist))))))


Все достаточно просто my-extract-word () получает слово
находящееся под курсором. Остальные функции дергают одну из
стандартных для полученного ранее слова. Соответственно все они
прицепленны к хоткеям.

А еще я привел свой .emacs к такому виду
(load "~/.emacs.d/myfuncs.elc")

Cоответственно весь конфиг теперь лежит в myfuncs.el и при каждом
изменении перекомпиляется. Даже для моей сравниельно небольшой
конфигурации скорость старта возросла заметно.

И еще...
Пока делал этот пост обратил внимание. Толи у emacs подсветка синтаксиса для eLisp работает не правильно, толи htmlize-buffer косячит. :(

вторник, 13 октября 2009 г.

Пару слов о jsmpp

Что это.

jsmpp это java библиотека для работы с протоколом SMPP. Очень веселая надо признаться библиотека. Несмотря на всю простоту простокала, ей реализуемого, сама она ниразу не претендует на простоту как понимания так и реального использования. При этом функционал, как это не прискорбно, охвачен далеко не полностью а способы расширения функционала весьма не очевидны(об этом далее). Кроме того она до мозга костей пронизана java-way'ем. Прибавьте сюда от факт что персонаж писавший этот курсовой проект просто дичайшим образом переел паттернов. конкретно ему очень понравилась идея делегирования. И он ее применил где только мог. В исходных кодах этой библиотеки я усмотрел наверное всего пару классов которые никуда свои инстансы не передают. Глубина такой передачи запросто может превышать один объект.

Краткое описание моих злоключений.

Есть созданный не мной простенький смсцентр с использованием этой библиотеки. И в один прекрасный момент потребовалось оганизовать в нем принудительную отдачу ESME_RTHROTTLED в некоторых случаях. Не спрашивайте зачем это могло понадобится. Просто примите к сведению факт - понадобилось. При наличии огромного количества EventListner'ов и прочих CallbackHandler'ов нет возможности назначить обработчик входящего сообщения так чтобы он вызывался в нужный момент. А организация обработки входящего сообщения в нужной тебе последовательности просто не предусмотрена. Задача решлась с помощью грязного хака. Я принудительно подменяю значение ESME_ROK на
ESME_RTHROTTLED.

Итого:
Если возникает желание воспользоваться этой библиотекой то лучше:
1) Глубоко вздохнуть
2) Перечитать спецификацию SMPP
3) Придумать другой способ решения проблемы