суббота, 30 июля 2016 г.

Еще про artist-mode, в качестве простого редактора блок-схем

Про artist-mode я уже упоминал, в нем вполне можно делать блок-схемки. А на их как известно нужны текстовые надписи))  И вот тут незадачливого рационализатора ожидает засада!  Стандартная функция "Вставить текст" вам за одно и услужливо отредненит его в ascii-арт, набрать с клавиатуры несложно, но придется гонять курсор стрелочками: все 3 кнопки мыши уже заранее забиндены!
  • Левая указывает начало новой фигуры (и начинает ее рисовать)
  • средняя показывает быстрое меню выбора инструментов рисования (кстати, очень удобно)
  • правая у нас как стирательная резинка.
С этим нужно что-то делать! Я решил перебиндить правую, чтобы просто-переставляла-курсор-куда-нужно. Пришлось погуглить, но вроде Ок:

;;; Artist mode
(defun artist-set-mouse (EVENT)

   (interactive "e")
   (mouse-set-point EVENT))
(add-hook 'artist-mode-hook (lambda () 
                              (define-key artist-mode-map [down-mouse-3] 'artist-set-mouse)
                              (define-key artist-mode-map [mouse-3] 'artist-set-mouse))) 

Теперь можно и порисовать диаграммки. Возможно, странно выглядит выбор самого Emacs для этих целей, но поскольку рисую-то для себя, то вполне Ок. Не ставить же ради этой довольно-таки простой задачи какой-нибудь прости б-же офес?? Единственное, чего пожалуй не хватает - это стрелок на концах линий..

пятница, 29 июля 2016 г.

Взломанные Небеса

С отзывами на художественные произведения всегда сложно: про крутое и достойное не знаешь как и начать, а писать про всякую ерунду в принципе не имеет смысла. Так вот, с одной стороны "Взломанные Небеса" Робертсона редкий нынче представитель сплава киберпанка и НФ, а с другой стороны все-таки до шедевра не дотягивает. Его можно прочитать не отрываясь за один раз, но перечитывать уже захочется вряд ли. Из несомненных плюсов то, что в начале книги автор не пытается ничего разжевывать "для дебилов" и избегает неуместных и занудных вводных, а сразу бросает читателя непосредственно в действие - подход, который я весьма уважаю. Если сразу ничего не понятно, но уже неинтересно и нет желания разбираться, то зачем тогда вообще читать книгу?

Техническая терминология в романе приемлема, но.. не идеальна, или же дело в посредственном переводе? Что же до метафор, аналогий и прочих выразительных средств именно киберпанка, то имхо в конце все все съезжает к какому-то излишне буквальному и натуралистичному сюру)) У Стросса например подобное хотя бы читается прикольно и местами с ухмылкой, а вот Робертсон немного не дотягивает. В остальном к сюжету почти нет претензий, за исключением "богов" и какого-то охренительно человекоподобного ИИ, но это уже было бы спойлером. Опять же у Бэнкса в "Культуре" все смотрится посерьезнее и куда основательнее что ли. Впрочем, в последнее время киберпанк/технопанк находится в глубокой заднице, так что сойдет и Эл Робертсон :)

UPD Так же не будет спойлером добавить, что автор знатно постебался над современными реалиями вроде "хомячков из соцсетей", за что отдельный респект! 

вторник, 19 июля 2016 г.

Раскидываем окна по рабочим столам одним движением мышки.

В Xfce пункт "Переместить на рабочий стол №" зарыт в меню окна, неудобен и не интуитивен. То ли дело перемещать движением мыши: мышка вправо- на рабочий стол справа, влево.. И это можно сделать! Добавить шорткат для вызова функции, движение мышки и.. Код конечно "грязен", но это первое, что пришло в голову:
#!/bin/sh
# Разбрасываем окна движением мышки!
location () {
    desktop=$(wmctrl -d | grep '*' | cut -d ' ' -f1)
    eval $(xdotool getmouselocation --shell | grep -o 'X=[0-9]*')
    p1=$X
    sleep 0.3
    eval $(xdotool getmouselocation --shell | grep -o 'X=[0-9]*')
    p2=$X
    if ((p2-p1 > 0))
      then m=1
      else m=-1
    fi
    let d=$desktop+$m
    echo ${d#-}
}
wmctrl -r :ACTIVE: -t $(location)
И в завершение добавить индикацию направления перемещения, например с помощью gtkdialog3 или aosd-cat, или даже notify-send, на выбор.

воскресенье, 17 июля 2016 г.

Парсинг веба на Emacs Lisp

Наверно достаточно было бы указать этот репо на Гитхабе: zweifisch/enlive - один крутой китаец практически все сделал за остальных. Поэтому приводить какой-то дополнительный быдлокод будет излишне, разве что некоторые заметки по ходу пьесы.

'enlive-text' позволяет получить собственно текст из сырых (raw) результатов, а 'enlive-attr' отдает атрибуты, например нам нужен только "a href" - URL ссылки:
  (enlive-attr (enlive-query el [a])
el - просто некий элемент HTML-документа, в данном случае первая попавшаяся ссылка в блоке.

Сжимать, сжимать, сжимать! В результате парсинга некоторых сайтов на выходе страшная каша с десятками пробелов и табуляций подряд. Требуется что-то такое:
  (replace-regexp "\t" " " nil 1 (point-max))
  (replace-regexp "\s+" " " nil 1 (point-max))
  (replace-regexp "\n\s" "" nil 1 (point-max))

А если что-то обновилось? Вот тут удобно считать хеш от блока - встроенная функция md5.

 Ну а как хранить результаты? Sqlite, или может быть mailbox (MH)? Но победила лень ;) В обычном файле *.org - и это оказалось чертовски удобно (собственно, для того оно и было придумано).

И главный вопрос: а нафига все это надо?? ;)
Ну, тут прямо скажем все просто. Некоторые нехорошие пи@@ы не делают лент RSS на своих сайтах - либо тупо не умеют, либо говноконтент в лентах новостей не протолкнуть. А я часто брезгую туда ходить и бесполезно тратить свое время. Зато у нас есть компьютеры, которые способны обрабатывать по нужным алгоритмам практически любую информацию. Тем более уж текстовую. Тем более какой-то рунет ;)

суббота, 16 июля 2016 г.

Подсветка в Edebug

https://github.com/ScottyB/edebug-x

Подсвечивает текущую строку и главное брекпойнты. И еще фичи, см. линк.

среда, 13 июля 2016 г.

Wanderlust- работа со списком сообщений.

После ответа через веб-интерфейс Gmail сообщение окажется во входящих Wanderlust. Для перемещения его в отправленные- шорткат "o" (wl-summary-refile) и дальше стрелками вверх-вниз перебираем список локальных ящиков или начинаем вводить его имя, например "+se.." Любое подобное действие является только пометкой, подтвердить/выполнить- "x".

Ответить- "a", после чего набранный текст будет сохранен в черновиках. Но и только, для отправки следует нажать "C-c c-c" и подтвердить "y".

Еще кое-что важное, т. к. через мануал порой сложно продраться:
по умолчанию черновик письма после отправки черновиком быть перестает :) и просто удаляется. Чтобы копии отправленных сообщений сохранялись локально, следует установить значение поля FCC (и второй параметр тоже не помешает):
(setq
    wl-fcc "+sent"
    wl-fcc-force-as-read t
)

Следующие Предыдущие Главная страница

Blogger Template by Blogcrowds