ARCHIVE  ENTRY  COMMENT  TRACKBACK  CATEGORY  RECOMMEND  LINK  PROFILE  OTHERS
<< August 2017 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>
2016.02.25 Thursday

スポンサーサイト

一定期間更新がないため広告を表示しています

2014.07.13 Sunday

[Emacs] "、。" を自動的に ",." に

"、。" を入力するとその場で即座に ",." に変換される。

(local-set-key "、" ",")
(local-set-key "。" ".")

2014.06.07 Saturday

Emacs Howm のスケジュールを iPhone のカレンダーと同期

Howm のスケジュールが iPhone で通知されたら便利だなーと思って書いてみた。

(defun my-howm-generate-vevent (y m d dd body)
  (concat "BEGIN:VEVENT¥n"
          "SUMMARY:" body "¥n"
          "DTSTART:"
          (format-time-string "%Y%m%d" (encode-time 0 0 0 d m y)) "¥n"
          "DTEND:"
          (format-time-string "%Y%m%d" (encode-time 0 0 0 (+ d dd) m y)) "¥n"
          "END:VEVENT¥n"))

(defun my-howm-export-ics (ics-file)
    (when ics-file
      (let ((lst nil))
        (with-temp-buffer
          (insert-string (howm-menu-reminder))
          (goto-char 1)
          (while (search-forward-regexp
                  "¥¥[¥¥([0-9]+¥¥)-¥¥([0-9]+¥¥)-¥¥([0-9]+¥¥)¥¥][@!]¥¥([0-9]+¥¥)? ¥¥(.+¥¥)$"
                  nil t)
            (push (list (read (match-string 1))          ; year
                        (read (match-string 2))          ; month
                        (read (match-string 3))          ; day
                        (read (or (match-string 4) "1")) ; duration
                        (match-string 5))                ; body
                  lst)))
        (with-temp-file ics-file
          (set-buffer-file-coding-system 'utf-8-dos)
          (insert (concat "BEGIN:VCALENDAR¥n"
                          "PRODID:Emacs Howm¥n"
                          "VERSION:2.0¥n"
                          "METHOD:PUBLISH¥n"
                          "CALSCALE:GREGORIAN¥n"
                          "X-WR-CALNAME:Emacs Howm¥n"
                          "X-WR-TIMEZONE:Asia/Tokyo¥n"
                          "BEGIN:VTIMEZONE¥n"
                          "TZID:Asia/Tokyo¥n"
                          "BEGIN:STANDARD¥n"
                          "DTSTART:19700101T000000¥n"
                          "TZOFFSETFROM:+0900¥n"
                          "TZOFFSETTO:+0900¥n"
                          "END:STANDARD¥n"
                          "END:VTIMEZONE¥n"))
          (dolist (elem lst)
            (insert (apply 'my-howm-generate-vevent elem)))
          (insert "END:VCALENDAR")))))

関数を呼ぶと ics ファイルが生成されるので、dropbox とか適当な場所にアップロードして iPhone からアクセスすれば OK。一度アクセスすれば iPhone の機能でそれ以降は勝手に更新してくれる。
2014.06.03 Tuesday

[Emacs] 日本語と英語の間に空白を自動挿入する

以下のコードで my-jipangu-mode マイナーモードが定義される (モード名の元ネタは pangu-spacing)。
 
(defvar my-jipangu-japanese-rx "¥¥cA¥¥|¥¥cC¥¥|¥¥ck¥¥|¥¥cK¥¥|¥¥cH")
(defvar my-jipangu-english-rx "[0-9A-Za-z]")

(defun my-jipangu-insert-spaces (beg end &rest _)
  (setq beg (max (1- beg) 1)
        end (min (1+ end) (1+ (buffer-size))))
  (save-restriction
    (narrow-to-region beg end)
    (save-excursion
      (dolist (rx (list
                   (concat "¥¥(" my-jipangu-english-rx "¥¥)"
                           "¥¥(" my-jipangu-japanese-rx "¥¥)")
                   (concat "¥¥(" my-jipangu-japanese-rx "¥¥)"
                           "¥¥(" my-jipangu-english-rx "¥¥)")))
        (goto-char beg)
        (while (search-forward-regexp rx nil t)
          (forward-char -1)
          (insert " "))))))

(define-minor-mode my-jipangu-mode
  "automatic space insertion between Japanese and English letters."
  :init-value nil
  :global nil
  (if (not my-jipangu-mode)
      (remove-hook 'after-change-functions 'my-jipangu-insert-spaces t)
    (my-jipangu-insert-spaces 1 (1+ (buffer-size)))
    (add-hook 'after-change-functions 'my-jipangu-insert-spaces nil t)))


org-mode や tex-mode で自動的にオンになるようにしておくと便利。あとは markdown-mode とか。
 
(add-hook 'tex-mode-hook 'my-jipangu-mode)
(add-hook 'org-mode-hook 'my-jipangu-mode)

2014.05.25 Sunday

100円自作オーディオスプリッター

100均のオーディオ分配器をいじってオーディオスプリッタを作りました。

オーディオスプリッタというのは、ステレオの音声を 右だけ と 左だけ の2系統に切り分ける機器。
iPhoneのDJアプリはメインの音声とキューイングのための音声とがそれぞれイヤホンの右・左に流れるので、これを別々の機器で再生するために使います。

普通に買うと4桁円かかっちゃうみたいなので自作です。
 
続きを読む >>
2014.05.03 Saturday

1000円自作Arduinoで工作入門

工作にちょっと興味が出てきたので、Arduino互換の回路を自作してみた。



LED光らせたりモーター回したり、センサーに反応して何かしたり、パソコン単体ではできないようなことが割とあっさりできるので楽しい。

2台目以降は500円程度でも組むことができます。
続きを読む >>
2013.12.20 Friday

Gauche.parser.pegメモ

公式にはドキュメントがないようなのでメモ
続きを読む >>
2013.11.08 Friday

Emacs 23→24の変更点(3)

Elispを書く人向けの変更。
続きを読む >>
2013.11.08 Friday

Emacs 23→24の変更点(2)

編集コマンドの挙動、あと個別のメジャーモードの変更。
続きを読む >>
2013.11.08 Friday

Emacs 23→24の変更点(1)

一通り読んだので個人的に気になったものをピックアップ。まずはEmacsの全体的な機能変更。
続きを読む >>
2013.05.13 Monday

マージンを入れたらなんか集中できそうな気がした

(defvar my-automargin-margin 30)

(defun my-window-width (&optional window)
  (let ((margins (window-margins window))
        (width (window-width window)))
    (+ width
       (or (car margins) 0)
       (or (cdr margins) 0))))

(defun my-automargin-function ()
  (let ((margin (if (= (frame-width) (my-window-width))
                    my-automargin-margin 0)))
    (dolist (window (window-list))
      (set-window-margins window margin margin))))

(add-hook 'window-configuration-change-hook 'my-automargin-function)

ウィンドウが横に分割されてない場合、自動的にマージンを入れる。
Powered by
30days Album
PR