wgetすればCygwinのsetup.exeが古いと言われないな

さっき書いたエントリのGmail用のChromeショートカット
http://d.hatena.ne.jp/lightcyan/20120616/1339840720
はあまり使わないと思うんですが、その過程でひとつ思いつきました。僕はCygwinバージョンアップのためにsetup.exeをデスクトップに置いているのですが、10年以上前からの癖で「バージョンアップしたらMeadowの○○が使えなくなった…」とか避けるため、めったにバージョンアップしませんでした。で何か問題が発生してCygwinバージョンアップしか対処法がなさそうだと思ってから、バージョンをあげるのですが、大抵setup.exeが古いと言われて「めんどくさ」と思ってそれもほったらかしでした。

で考えたのですが、[右クリック]→[新規作成]→[ショートカットを作成]で、リンク先を

C:\cygwin\bin\wget.exe http://cygwin.com/setup.exe

にしてしまえばいいんですね。で、作業フォルダを

"c:\Documents and Settings\UserName\デスクトップ"

にすると。まぁ完ぺき主義の人はシェルスクリプトでも書いて、wget→setup.exe→setup.exe消去をすればいいと思いますけど、wgetするか、残ってるexe実行するかはその時の気分でいいんじゃないでしょうか。これで少し幸せになれそうですw

Gmail用にChromeのショートカットを作ってみたが

どこで見たか失念したが、Chromeを常用する気がなくても、GMailGoogleリーダーに一発でアクセスできるようなショートカットをデスクトップに置いておくと便利と書いてあった。

たしかに、自分は何かのアカウント作成の時に殆ど常にGMailを使っているが、新規登録やパスワード変更後「確認のメールを送りました」って見るとついPCからスマホに手を移して確認メールを見て、それから「あ、このリンククリックしろと言われるって分かってるんだから、やっぱPCで見れば良かった」とかやってしまうくらいPCでGMailを読むのがめんどくさいと感じているので、これはいい方法ではないかと思った。

でも肝心のやり方が書いてなくてURLのリンクを作って「だよね。常用のFirefoxで開くになるよね」と思ってそのままにしてましたが、今Windowsがぶっ飛んで、予備PCのcygwinの更新とかがやたら時間かかって暇なので、調べたらこうやればいいと。
Gmailをさらに使いやすくする3つの方法
http://www.ex-it-blog.com/archives/9213/
ショートカットにしたいページを開いた上で、右上のスパナみたいなのをクリックして[ツール]→[アプリケーションのショートカットを作成]ね。

リンク先が、"C:\Program Files\Google\Chrome\Application\chrome.exe" --app=https://accounts.google.com/…"のようになります。

でやってみたが、考えてみれば当たり前だがGMail中のリンクをクリックしたらChromeで開きますね。ただのメーラーのつもりで使うわけにはいかんすね。Googleリーダーも同じ理由であまり乗り気になれない。あと複数アカウントを持っているので、そこら辺の切り替えがアンドロイド並みに簡単なら言う事ないけど、新着メールを知らせる機能みたいなのを使えばよかったのかな。
Gmailに「デスクトップ通知」機能、新着メールをポップアップ通知
http://internet.watch.impress.co.jp/docs/news/20110127_423026.html
でも

Gmailを開いているブラウザー/タブが非アクティブの状態などでも、デスクトップ右下に表示されるポップアップで新着メールが届いたことを把握できる。

じゃぁダメっぽいですね。
まぁGMailに緊急性の高いメールは来ないので(メルマガとか利用してるサービスからの通知とかばかり)、Mewをメインに使うかな。
MewGoogleimapユーザーを使い分ける方法
http://d.hatena.ne.jp/lightcyan/20120304/1330844868
Mewだとパスワードを何回間違えても、「画像の文字を打て」とか言われないんですw
でもGMailの設定変更にはやっぱりさっきのChromeかなと。

ブラウザーをめぐる戦いが熱い

MSの「Security Essentials」がChromeマルウェアと誤認し削除 [PCニュース] 2011/10/03(月)
http://virtua-ch.mydns.jp/test/read.cgi/browser/1317647824/

GoogleChromeから余計な機能を取り払いさらに軽量・高速化したブラウザ「Iron」 2012年01月16日
http://gigazine.net/news/20120116-iron/

GoogleSafariのプライバシーセッティングを迂回、利用者をトラッキング。MSはGoogleを批判。 [PCニュース] 2012/02/18(土)
http://virtua-ch.mydns.jp/test/read.cgi/browser/1329493439/

Google】こんどはIEだ! IEのプライバシー設定をバイパス ユーザをトラッキング [PCニュース] 2012/02/21(火)
http://virtua-ch.mydns.jp/test/read.cgi/browser/1329776807/

普段使ってるのはfirefoxなんですけど、名前すら出てこないって事は、Googleにトラッキングされてるに決まってるだろ!ってことなんでしょうね。

まぁ自分は別に気にしませんが。気になる人はCookieはまめに消せというわけですね。

MeadowのDiredで日付順の時に日付部分をハイライトするelisp

Dired by nameとDired by dateで、今どっちなのかすぐ分かるように色でも変えるものがないかなと探したのですが、見つからなかったので作りました。
ハイライトには himark.el

;;; himark.el --- marking text by highlighting

;; Copyright (C) 1999 by Roland Winkler

;; Emacs Lisp Archive Entry
;; Author: Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
;;         based on ideas by Ehud Karni <ehud@unix.simonwiesel.co.il>
;; Keywords: faces
;; Version: 1.0
;; Time-stamp: <2001-02-14 11:28:04 winkler>

を使っています。

以下のeslispを.emacsかどこかに書いてロードしてください。

;;; Highlight date string rectangularly in 'Dired by date' mode
(load "himark.el")
(add-hook 'dired-after-readin-hook
	  'my-dired-highlight-by-date)
(defvar my-date-regexp 
  "\\([12][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\\|[01][0-9]-[0-5][0-9] [0-2][0-9]:[0-5][0-9]\\)"
  "Regexp to search date string.")
(defun my-dired-highlight-by-date ()
  "Highlight date string rectangularly in 'Dired by date' mode"
  (if (string-match "Dired by date" mode-name)
      (save-excursion
	(let (rectangle-beg rectangle-end)
	  ;; Search beginning
	  (re-search-forward my-date-regexp)
	  (backward-char 7)
	  (re-search-backward " ")
	  (forward-char)
	  (setq rectangle-beg (point))
	  ;; Search end
	  (goto-char (point-max))
	  (re-search-backward my-date-regexp)
	  (forward-char 7)
	  (re-search-forward " +")
	  (backward-char)
	  (setq rectangle-end (point))
	  ;; himark-rectangle
	  (himark-rectangle rectangle-beg rectangle-end)))))

動作環境は"Meadow-3.00-dev (KIKU)"ですが、Emacsでも動くんじゃないかと思います。

MewでGoogleのimapユーザーを使い分ける方法

…とか書いても需要はあるのだろうか。

とりあえず
Mew IMAPgmailIMAP超初心者編)
http://d.hatena.ne.jp/sleepy_yoshi/20080223/p1

Google AppsIMAP なメール生活
http://d.hatena.ne.jp/ichii386/20110319/1300476947
を参考に設定したのだが、自分はGoogleのアカウントをいくつか持っていたのだった。で切り替えの方法を考えた(誰でも考え付きそうだけど…)。

Mewのバージョンは3.2です(古いです)。

(setq mew-user "user1")
;(setq mew-user "user2")
;(setq mew-user "user3")
(setq mew-mail-domain "gmail.com")

(setq mew-imap-server "imap.gmail.com")
(setq mew-imap-user (format "%s@gmail.com" mew-user))
(set mew-imap-auth  t)
(setq mew-imap-ssl t)
(setq mew-imap-ssl-port "993")
(setq mew-smtp-auth t)
(setq mew-smtp-ssl t)
(setq mew-smtp-ssl-port "465")
(setq mew-smtp-user (format "%s" mew-imap-user))
(setq mew-smtp-server "smtp.gmail.com")

(setq mew-imap-size 16777215) ;;16M

;; http://d.hatena.ne.jp/ichii386/20110319/1300476947
(setq mew-imap-trash-folder "%[Gmail]/Trash")
(setq mew-imap-delete       nil) ; imap サーバから削除しない
(setq mew-fcc               nil) ; 不要
(setq mew-dcc              nil) ; 必要なら入れる

以上のようにしてユーザーを変えたくなったら、mew-userのコメントアウトする場所を変えて、Mewを立ち上げなおすと最小限の設定書き換えでユーザー変更できると思います。

emacs-w3m shimbunをopmlに対応させるべくがんばっているが…

最新版こっちです。
lightcyan / my-shimbun
https://github.com/lightcyan/my-shimbun/

sb-opml-rss.elという事でsb-cnet-rss.el由来のコードを変更しているところです。

;;; sb-opml-rss.el --- shimbun backend for american-rss

;; Modified from sb-cnet-rss.el by Hiroyuki KUROSAKI <noir@st.rim.or.jp>
;; Below is the original copyright notice of sb-cnet-rss.el.
;;
;; Copyright (C) 2003 NAKAJIMA Mikio <minakaji@namazu.org>

;; Author: NAKAJIMA Mikio <minakaji@namazu.org>
;; Keywords: news
;; Created: Jun 14, 2003

;; This file is a part of shimbun.

;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program; if not, you can either send email to this
;; program's maintainer or write to: The Free Software Foundation,
;; Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.

;;; Commentary:

;;; Code:

(require 'shimbun)
(require 'sb-rss)

(luna-define-class shimbun-opml-rss (shimbun-rss) ())

(defvar shimbun-opml-rss-counter 1) ;; **コンストラクタで1に初期化したかったが使い方が分からないのでこうした。
(defvar shimbun-opml-rss-file "~/opml.xml")
(defvar shimbun-opml-rss-groups '("1" "2" "3" "4" "5")) ;; **関数化したいが、何か他のファイルを弄る必要あり?
(defvar shimbun-opml-rss-from-address  "")
(defvar shimbun-opml-rss-content-start "<h3>.*</h3>\\|<!-- エントリー -->\\|<DIV CLASS=POST_BODY>") ;; 適当
(defvar shimbun-opml-rss-content-end "<div class=\".*comment.*\">\\|<!-- /エントリー -->") ;; 適当

;; <〜面とかにアクセスするためのURL> → opmlからblogのfeedを返させる。
(luna-define-method shimbun-index-url ((shimbun shimbun-opml-rss))
  (let ((num (shimbun-opml-rss-internal)))
    (set-buffer (get-buffer-create " *w3m opml*"))
    (insert-file-contents shimbun-opml-rss-file)
    (let ((i 0))
      (while (and (< i num)
		  (re-search-forward "xmlUrl=\"\\(http://.*\\)\"" nil t)
		  (setq i (1+ i))))
      (match-string 1))))

;; 次にopmlの中の何番目のurlを読むべきか返す。
;; shimbun-current-group-internal がgroupを返すのを真似ている。
(defun shimbun-opml-rss-internal ()
  (setq shimbun-opml-rss-counter(1+ shimbun-opml-rss-counter)))

;; ;; mew-shimbun-folder-groups のGroupを返す 
;; ;; …と思ったが、なんかうまく行かず、とりあえず defvar にした。
;; (luna-define-method shimbun-opml-rss-groups ((shimbun shimbun-opml-rss))
;;   (assoc "opml-rss" mew-shimbun-folder-groups))

;; <〜面から記事へアクセスするためのURL> → feedからblogのartcleを返させる。
(luna-define-method shimbun-get-headers ((shimbun shimbun-opml-rss)
					 &optional range)
  (shimbun-opml-rss-get-headers shimbun))

(defun shimbun-opml-rss-get-headers (shimbun)
  (sit-for 0) ;; 何も書かないのもあれなので。
  )

(luna-define-method shimbun-rss-build-message-id
  ((shimbun shimbun-opml-rss) url date)
  (unless (string-match "http://\\(.+\\)" url)
    (error "Cannot find message-id base"))
  (concat (match-string-no-properties 1 url) ""))

(provide 'sb-opml-rss)

;;; sb-opml-rss.el ends here

お聞きしたい事として、**付けた、
コンストラクタで1に初期化したかったが使い方が分からないのでこうした。(これはダメならダメでこのままでもいいかと思っています)

関数化したいが、何か他のファイルを弄る必要あり?(これは今はopmlの中のフィードを5個しか処理しないこと言うことなので、このままではちょっと悲しいです)

テストしてみたいと言う方は .mew

(setq mew-shimbun-folder-groups
      '(("opml-rss"
 	 ("opml-rss.1" . last)
 	 ("opml-rss.2" . last)
 	 ("opml-rss.3" . last)
 	 ("opml-rss.4" . last)
 	 ("opml-rss.5" . last))))

と書いてください。(これも一番大きい数を書くだけで何とかしたいです)

他にもなにか気づいた事ございましたら教えていただきたいと思います。ちなみに今 shimbun-get-headers を書いているところです。

原発反対に思う。

もう10年以上前の話になるが、大学に入ったのは環境保護について学ぶというのが目的だった。というか無理やりそういう目的にして高校を卒業した。そして大学に入って、結局自分の考えていたような授業にはめぐり合わなかったとしかいいようが無いのだが、反原発の活動の話はいろいろ聞いた。ちゃんとした授業のノートというものは手元に残っていないが、記憶を頼りに書いてみる。間違っていたら突っ込んで欲しいけど、期待はできないので、読む人は鵜呑みにしないでほしい。ただ自分の記憶を確かめようとネットで裏を取ろうとしたけど、結局よく分からなかったので、この内容をちゃんと確かめたいと思った人は僕個人宛にメッセージを頂ければ、なんという先生からこの話を聞いたか送り返します。

ともあれ原発は水を蒸気にしてタービンを回すわけだが、その水をどんどん捨ててしまうわけにもいかないので、循環させて、蒸気になった冷却水を冷やして水に戻すために海水を使う。一次冷却水、二次冷却水と多段になっているようだけど、とにかく最終的には海水は海に流すわけである。この時海域に関して存在している権利の強さが問題になる。

つまり原発の排水を海に流すとき、より強い権利を持っている人が反対したら排水を流すことは出来ない。この権利で一番強かったのが確か漁業権だったと思う。そして環境保護を訴える権利は一番弱い入水権というのに分類されていたと思う。

なので、環境保護を訴える人は漁業者と手を結ぶのである。原子炉の排水も放射能を多少は含む。そんなものを流されないほうが漁業にも悪影響が無くていいですよね、一緒に反対しましょうというわけだ。とはいえもちろん、気がついたら自分が漁業をしている海に排水する原発が出来てた、なんて事はない。原発建設計画の段階で保証金を払い漁業権を放棄させるのだ。

この金額は具体的には知らないが、自分の漁場で漁業をやる事に未来を感じない人が、漁業をやめて人生再スタートをきれるくらいには、払っているはずというより、そこまで値を吊り上げるまではみな反対するだろう。

漁業権というのは、漁業協同組合が持っていて、また、それぞれの漁協が個別に漁場を持っていて、原発など大掛かりなものになると、おそらく複数の漁協に漁業権放棄をさせると思うのだが、問題は漁場によっては、収入が少なく漁業をやめたいという人が大半だったり、他の海域を漁場とする漁協では収入がそこそこあり、環境保護のためにも断固漁業権は放棄しないという考えでまとまったり意見が分かれることだ。

以上の事はもちろん原発に限った話ではなく、ダム建設や諫早湾干拓なども漁業権を放棄させてから、漁業に悪影響がでるような工事が始まるというのは同じだ。ようするに何が起こるか、はじめは保証金を吊り上げるためにみんな反対するが、ある程度の額まで保証金を吊り上げると、良くない漁場をもっている漁協は賛成派に回り、反対派に嫌からせをするのだ。もちろん全員が漁業権放棄をするまでは保証金も支払われないので、嫌がらせも本気である。

環境保護を訴える人は、一生懸命反対派を励ましつつ、なんとか、この事業が全国的に知れ渡り、全国的な反対運動になり、建設計画が断念されるように、努力するわけである。しかし現実は非情であり、何かが起こらなければ、大概の人は動かない。ようするにそれは今回の福島原発の事故のような事である。また諫早湾干拓の時も、干拓が始まりTVが映像を流すようになってから、全国的に反対意見が大きくなったと記憶している。「せめて、あと半年早く反対してくれれば、間に合った」という言葉を聞いたのは確か諫早湾干拓の事だったと思うが、違ったとしても問題の根っこの部分は変わらない。

もちろん何かが起こってから、反対する事を無意味とは言わないが、効率的でない可能性があるという事言いたいのである。TVは環境破壊を訴えるような映像を流しながら、親切に「この問題にはもう間に合わないかもしれませんが、まだ間に合う問題もあります。みなでそれに反対しましょう」などと言ってくれるだろうか。僕は、この「あと半年…」というのを聞いた時、問題は少しでも早く察知し、意見を言うなら少しでも早いほうがいいと痛感した。今では家にTV受信環境も無く、情報収集はもっぱらshimbun(emacs-w3m)に頼っている(サポートはすでに終了しており、個人で変更して使い続けているが)。

もちろん原発は無くせるなら無くしたほうがいいと思っている。しかし現実はそう簡単だろうか。大学の授業では、「原発は麻薬だ」と聞いた。一つ作ると建設中の地方自治体に対する経済効果には大変大きなものがあり、建設が終わるころには「これが無くなったら何もかも元どおりだ」と知事たちは考えるらしい。そんなときに「もう一機作りませんか」と話が来る。漁業権の問題はもう解決しているだろうからハードルも低い。つまり常習性があるのだ。反対するなら、話が立ち上がってすぐに勉強会を始め、平気でつく役人の嘘を徹底的に見抜き、建設計画の少しでも早いうちに「これは無理だ」と相手に思わせなければだめだという話だった。なんとなく言いくるめられて調べて嘘だとわかり次の会合で「嘘だったじゃないか」といい、また新たな嘘で言いくるめられと繰り返しているうちに、ある程度まで行くと計画は決して止められなくなる。

例をあげると、法的拘束力はないが(という話だったと思ったが定かでない)、とにかく原発建設に賛成か反対かを住民投票をしようというところまで話を持っていって実行した自治体があった。自分たちで撮影のカメラも回し、投票所前には投票開始時刻前から大勢の人が集まっていた。なかなか開かない扉に投票所前で苛立ち大声をあげる住民。やっと扉が開き押し合いながら投票所に入っていくと、すぐに放送が流れる。「委任状が過半数集まったので、この投票結果は賛成多数ということに決定しました!」(住民が大騒ぎしていたのでよく聞こえず、先生の説明でそうなのかと思っていた記憶があるが)。すかさず反対派も声をあげる。「反対票を投じるつもりだった人は、人数を数えますので、残ってください!」結果は反対票も過半数。よって委任状を公開せよという要求だったが一向に答える気配が無いとかいう話だった。

また他には原発ではなかったが、よくその先生はTVの討論会などにも招かれ意見を言っていた。その先生は「環境に悪影響を与えないというお話だが、現に漁業者には保証金を払っている。悪影響が無いなら税金の無駄遣いで、違法ではないか」と役人を追い詰める。そこでバトンタッチいかにも「私頭にきています」みたいな反対派が感情論をまくし立てる。感情論などどうとでも返せるので、役人の顔には安どの表情さえあったように思う。そして無意味に時間は流れ討論会は終わり。その時感情論は無意味だとつくづく思った。

まぁとりあえず自分ひとりで出来ることなど、たかが知れていると思い、自分はそんな世界には残らなかった。今は一応会社員なので本名は出さずにいろいろとネットに書いている(先ほどのshimbunから得たいろいろな情報を元にして)。また理論の後ろ盾が欲しいので、『文明の衝突と21世紀の日本』辺りから(この本はトンデモとの事らしいが)始めて、いろいろと読んでいる。