Hatena::ブログ(Diary)

ヒルズで働くholidays-lの技ログ このページをアンテナに追加 RSSフィード Twitter

2012年05月20日

[]Module::Buildを使ってると勝手にshebangが書き換わる

Module::Build::fix_shebang_line がshebangを

#!/usr/bin/perl.exe 

eval 'exec /usr/bin/perl.exe  -S $0 ${1+"$@"}'
    if 0; # not running under some shell

って置き換えてくれるんだけど、もともと

#! /usr/bin/perl
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
  if 0;

って書いてるから、

#!/usr/bin/perl.exe 

eval 'exec /usr/bin/perl.exe  -S $0 ${1+"$@"}'
    if 0; # not running under some shell
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
  if 0;

ってなことになっちゃうんだよね。実害は無いけどあんまりゴニョゴニョせずにどうにかならんもんかね?

2012年02月28日

[]直ったかも?!→Re: Googleカレンダーの「毎日の予定リスト」通知メールが止まらない

以前↓な記事を書いたんだけど、その後「from:calendar-notification@google.com "Remember The Milk"」を削除するようGmailのフィルタを設定して放置してました。(RTMはもう辞めたのです)

Googleカレンダーの「毎日の予定リスト」通知メールが止まらない - ヒルズで働くholidays-lの技ログ

それから更に何年も経つのに未だに送られてきていて、今回ちょっと本気出して対応してみたら何とかなったかもしれない件です。

似たような報告↓

カレンダーIDを探して

とりあえず、既にカレンダーIDが分からんので、何とか調べようと思ってメールをチェック。

Subject: 毎日の予定リスト - ******** さん 04:40 時点 
From: Google カレンダー calendar-notification@google.com

********さんの予定:
終日	2012/02/27 (月)	Tasks for 2/27	Remember The Milk

「Remember The Milk」カレンダーの毎日の予定リストの送信が設定されているため、本メールを ******** にお送りしています。

毎日の予定リストを受け取るカレンダーを変更するには、https://www.google.com/calendar/ にログインし、該当するカレンダーの通知設定を変更してください。

ここで「該当するカレンダーの通知設定を変更してください」とか言われるけど、既に登録解除済みだからできないんだってば。

「Tasks for 2/27」のリンク先が「https://www.google.com/calendar/event?action=VIEW&eid=長い長い英数文字列」になっている。eidはおそらくイベントIDのことで(昨年GoogleCalendarAPIいじってたので、見た目でもイベントIDって分かった)、イベントIDが分かるってことはガンバればカレンダーIDも分かるということ。

リンク先を開いたらイベント情報が出る。

Tasks for 2/27
2月 27日 (月), 00:00 〜 2月 28日 (火), 00:00
カレンダー	Remember The Milk

肝心のカレンダーにリンクが張られてなくて分からなかったけど、ソースを見て"Remember The Milk"で検索すると近くにカレンダーIDが書かれてた。

カレンダーを再登録

あとはカレンダーを追加し直して通知をオフにすればいい。そのためにはカレンダーIDを指定して登録できないといけないんだけど簡単な方法が思い付かない。プログラム書かないかんかな〜と考えながら他のカレンダーをいじっていたら

「マイカレンダー の詳細」の「カレンダーの情報」タブに「カレンダーのアドレス:HTML」というのを発見。リンク先は 「https://www.google.com/calendar/embed?src=カレンダーID&ctz=Asia/Tokyo」

あーそんな機能あったな〜ということで調べておいたカレンダーIDに置き換えてアクセスすると、埋め込みカレンダーが表示できた!そう!埋め込みカレンダーは右下にカレンダーを追加するボタンがあるのだった!

通知設定が無い!?

あとは通知設定でオフにするだけ〜と気楽に構えていたら、肝心の「通知」タブが無い…orz...

あくまでも自分の状況からの予想なんだけど、昔は設定できた気がするから(だから毎日の予定リストが届くんだろう)カレンダーIDが"********@import.calendar.google.com"だと通知設定ができないように変わってしまったのだと思う(もしかしたら被害者達はカレンダーIDが"********@import.calendar.google.com"なのかも)

他のカレンダーにはあるので、通知タブを開くJavaScriptをカレンダーIDだけ変えて実行してみたり色々やったけどダメだった。

これはいよいよ設定変更画面を模倣するプログラムを書かないといけないか?GoogleCalendarAPIにそんなのあったっけ?など考えてたらめんどくさくなって、一時退散することにした。

念の為、通知設定可能なカレンダーの「毎日の予定リスト」を意味無いだろうな〜と思いながら「1.オンにして保存 2.オフにして保存」だけしといた。

翌朝

何故か毎日の予定リストメールが届いていませんでした。(∩´∀`)∩ワーイ

まだ油断はできないので、明日もドキドキです。

本日も届いていませんでした!(∩´∀`)∩ワーイ

2012年02月24日

[]20歳になりました!

今日で0x20歳になったのでお酒解禁です!

このネタを使う日を32年間待ち続けていました!


↓0x20歳祝いに各所からプレゼントを頂きました↓

f:id:holidays-l:20120223221608j:image

2012年02月23日

[]lessでタブ文字を表示する

lessでタブ文字を表示するには--UNDERLINE-SPECIAL(-U)を指定する。

ちなみにlessは環境変数でオプション指定できるので、aliasではなく

export LESS='--ignore-case --UNDERLINE-SPECIAL'

としている。

ぎゃー。装飾付き文書(manとかperldoc)が超見難くなってしまった。

PAGERとして起動する時は-Uが付かないようにするためにこうした。

export LESS='--ignore-case'
alias less='less --UNDERLINE-SPECIAL'

[]ミニバッファの邪魔な履歴を削除する

ありそうなのに見つからなかったので書いてみました。

ミニバッファで何らかの消したい履歴が出ている時にShift-Deleteで消せます。

find-fileの履歴だけでなくdescribe-*の履歴とか、その他ミニバッファの履歴全てに使えるはずです。多分。

(define-key minibuffer-local-map (kbd "S-<delete>")
  #'(lambda ()
      (interactive)
      (set minibuffer-history-variable (delete (buffer-substring-no-properties (minibuffer-prompt-end) (point-max)) (symbol-value minibuffer-history-variable)))
      (goto-history-element minibuffer-history-position)
))

ついでにsession.elを使っていて、重複が鬱陶しいのでsession保存前に重複削除しています。

(defadvice session-save-session (before session-save-session-delete-dups activate)
  (set-buffer (find-file-noselect session-save-file))
  (goto-char (point-min))
  (while (re-search-forward "^(setq-default \\([^ ]+\\)" nil t)
    (delete-dups (symbol-value (intern-soft (match-string 1)))))
  (kill-buffer))

2012年02月17日

[]Emacsのiswitchbで、普段は*...*を完全無視して必要なときだけ出す設定

普段は*...*を完全無視する↓

(add-to-list 'iswitchb-buffer-ignore "\\`\\*")

iswitchbのミニバッファの先頭に*が入力されている時だけ↑の無視設定を解除する。

(setq iswitchb-buffer-ignore-asterisk-orig nil)
(defadvice iswitchb-exhibit (before iswitchb-exhibit-asterisk activate)
  "*が入力されている時は*で始まるものだけを出す"
  (if (equal (char-after (minibuffer-prompt-end)) ?*)
      (when (not iswitchb-buffer-ignore-asterisk-orig)
        (setq iswitchb-buffer-ignore-asterisk-orig iswitchb-buffer-ignore)
        (setq iswitchb-buffer-ignore '("^ "))
        (iswitchb-make-buflist iswitchb-default)
        (setq iswitchb-rescan t))
    (when iswitchb-buffer-ignore-asterisk-orig
      (setq iswitchb-buffer-ignore iswitchb-buffer-ignore-asterisk-orig)
      (setq iswitchb-buffer-ignore-asterisk-orig nil)
      (iswitchb-make-buflist iswitchb-default)
      (setq iswitchb-rescan t))))

ちょー見易くなった。

もっとロジック簡単になるかもしれないけど、やっつけ仕事なので。