2012-05-23 Wednesday
2012-05-19 Saturday
2012-04-07 Saturday
■[Google Apps]Google Groups によるMailing Listは階層化できない(?)
Google Groups (Googleグループ)は公開の/閉じた掲示板やMLを提供するサービス.
Google Groups によるMLは階層構成にすることはできるか? すなわち, Agumi at googlegroups.com, Bgumi at googlegroups.com というMLにそれぞれ学生を登録し, Ichinen at googlegroups.com には, Agumi, Bgumi を登録して, 個々の学生は登録しない, のような運用.
MLやMailの運用をやったことのある人にはわかるだろうが, 上のような構成は正しく動作すれば便利だが, 不吉なことを多く含んでいる. 実際, Google Groups では, 参加者追加の際に @googlegroups.com なアドレスが一律に拒否されるので, 上のような階層構成は不可能になっている.
しかし, 転送アドレスを間にはさんで, Google Groups をだますことはできないか? Ichinen には, {A,B}gumi at forwardingonly.com を登録し, これらをそれぞれ, {A,B}gumi at googlegroups.com のalias (転送設定) にしておけばどう? @googlegroups.com は参加者として追加できないという禁止にはかからないはず.
試したところ, これで一時的には意図した階層構成が実現できるものの, 数日後?数通後?からは, Ichinen へのメールが {A,B}gumi at forwardingonly.com に送信されなくなる{A,B}gumi at googlegroups.com で受信処理されなくなる. おそらく, Google Groups が各グループに届くメールを監視していて, 実はGroupから別のGroupへの送信が行われていることを推測して, 送信をdisableしたものと思われる受信しても無視するようになったものと思われる.
Google Groups for Business は Google Apps に備わる拡張版の? Groups だが, これは, 説明によると親子関係のGroupをサポートするとある(それは会社で使うなら部のGroup, 課のGroup とかなかったらだめでしょう). これが共有のためのユーザ集合だけの話なのか, MLに階層関係を作れるのか, 未検証.
■[Google Apps]No hierarchical structures in the Google Groups mailing list service
It is prohibited to add an @googlegroups.com address as a member of other Google Groups. Even if one introduces a intervening forwarding address (not @googlegroups), an @googlegroups address cannot receive e-mail deliveries from other google groups mailing list. Perhaps they automatically spot the forwarding behavior by watching the similarity of messages.
■[Google Apps]Google Groups のMLの通番は一意ではない
MLサーバでSubjectに[ML-name:00197]のように通し番号を挿入するということがよく行われる. Re: がついたらどうする? とか, Subjectを改変するのはよいのか? のような議論があるが, Google Groups のこの機能について衝撃の事実.
- Webインターフェースでは, サーバが直近につけた通し番号は表示されない. どうもデータとしてサーバ側に保持されていない(メールとしてが送られるときだけ付加される)らしい. 直近に, という意味は, 以前につけた通番が返信のSubject のRe: 以降に残ってサーバに送られてきたなら, それは Subject だからもちろん保持されるということ.
- メールに付加される通し番号は, 送信先によって異なる(その受信者の加入後の通し番号)らしい
このような通し番号はローカルに整理するときには依然として役立つが, 以前のメールを参照しつつ議論するときには大混乱を引き起こしそう. 議論はWebインターフェースでやれってことですね.
■[Google Apps]The sequential number in the subject of google groups e-mail delivery is receiver-dependent
The sequential number represents the number of e-mail deliveries he or she has received since he or she joined the group. It is not displaye on the web interface.
2012-04-04 Wednesday
■[mac][fink][tex][pdf]Fink のTeX Liveの dvipdfmx で日本語フォントをPDFに埋め込む設定
OS X 10.7.3, 10.6.8, Fink 0.32.4.1, texlive-0.20110705-103, dvipdfmx-20110311, an extended version of dvipdfm-0.13.2c で検証.
dvipdfmx は default では日本語フォントを埋め込まない設定になっている.
そのたびに指定する方法
/sw/share/texmf/fonts/map/dvipdfm に ptex-noEmbed.map, ptex-kozuka.map などの見るからに機能が想像可能なmapファイル群が置かれている(そして/sw/etc/texmf-config/web2c/updmap.cfgでptex-noEmbed.mapが選択されている)ので,
% dvipdfmx -f ptex-kozuka.map file.dvi
などとすると, ptex-kozuka.map が上書きロードされて, 小塚フォントが埋め込みされる.
ただし, これらのファイル内で記述された名前でフォントファイルがtexmf tree下に存在することが前提. よくありそうな, ヒラギノを使う設定では, /System/Library 内にある .otf が, HiraKakuPro-W3.otf などの名前でsymbolic linkされている必要があるが, これらは /sw/share/texmf/fonts/opentype/appleotf の下にすでに作られていた. 手でこれらを作った場合には,
% sudo mktexlsr
が必要.
Default で埋め込むようにする方法
% dvipdfmx file.dvi
だけで埋め込まれるようにしたい場合, /sw/etc/texmf-config/web2c/updmap.cfg を編集し(いちばん下に見るからにわかるマクロ定義がある. ただ, このファイルはupgradeのたびにdefaultに戻るから, 直接編集するなと書いてある), そのあと
% sudo updmap-sys
することで, /sw/var/lib/texmf/fonts/map/dvipdfm/updmap/kanjix.map などを更新する.
2012-03-31 Saturday
■[debian][web][php]Debian の PHP で UUID を生成する2つの方法
Ubuntuの場合の英語での解説はWeb上にたくさんあるけど, Debian について日本語で書いてもいいかな.
UUID=Universally Unique Identifierは, (確率的に)一意性が保証される文字列(を毎回ランダムに返す仕組み). ディスクのラベルや, git のコミットの名前に使われている.
PHPでは標準ではサポートされていないが, package を導入することで使う方法が2つある. この2つはOSSP(後者)とそうでないもの(前者)の2つの« 異なる »実装だと思うんだけど正しいだろうか. ちなみに Debian package uuid に含まれる コマンドラインツール uuid というのもあるけど, これは libossp-uuid を使っているので, 後者の実装.
なお, 両者に出てくる uuid_create 関数はたまたま名前が衝突しただけ. 引数も異なる.
PECL package uuid に含まれる uuid_create 関数
http://pecl.php.net/package/uuid
準備
PECLを使うために, Debian packages php-pear と php5-dev が必要.
pecl install uuid
する(Debian packages libuuid, uuid-dev やこれらが依存するものが必要). さらに, php.iniに extension=uuid.so を加える.
使用
例えば, UUID V4なら
$uuidstr=trim(uuid_create(UUID_TYPE_RANDOM));
Debian package php5-uuid に含まれるuuid_make, uuid_create, uuid_export 関数
http://packages.debian.org/lenny/php5-uuid
準備
Debian packages php5-uuid, libossp-uuid-dev やこれらが依存するものが必要.
使用
例えば, UUID V4なら
uuid_create(&$context); uuid_make($context, UUID_MAKE_V4); uuid_export($context, UUID_FMT_STR, &$uuid); $uuidstr=trim($uuid);
2012-03-24 Saturday
■[mail]再送 Resend をサボートするメールクライアント / メーラ
Resent-To, Resent-Cc, Resent-Date などがつく再送のことです. これらの情報を表示できるかどうかは問題にしてなくて, 再送, Resend というアクションが行えるかどうか.
- o Becky
- o Mew ("r" in summary mode)
- o Apple Mail (Message>Redirect)
- o Thunderbird with mailredirect extension http://mailredirect.mozdev.org/
- x Wanderlust
- x Gmail
- o? Outlook
- x Outlook Express
Gmail/Wanderlust を主に使ってましたが, これが理由で, またMewにもどろうかという気に.
検索上達
2009年時点だけどかなり網羅的なリストを発見
ResendingMailWithHeaders - Spamassassin Wiki http://wiki.apache.org/spamassassin/ResendingMailWithHeaders
Redirect とか "Resent-Cc" くらいで検索するとよかった. Resent-To とかって普通の文章の中にもでてきちゃうから.
なぜいまResend?
人に対応したメールアドレス 個人@gmail.com を使っているとしましょう. しかし, 複数のプロジェクトに関係するメールを読み書きします. 個々のプロジェクトは来年になったらそれぞれ別の人に引き継ぎます. どうやってメール全部を引き渡すか? あるいは, 関係するメールをその年の関係者が見られるようにするか?
例えば project1@googlegroups.com などを作り, 場合によっては, 個人+project1@google.com からの転送も設定して, 「project1関係はこのgroup / address に送って/Bccに加えて」 とお願いしてまわればいいわけです. そして, 来年になったらgroupの管理者/メンバーを変更すればいい. それでも, 個人@gmail.com に project1 のメールを送ってきちゃう人はいるわけです. そんなときに, ただの転送で絶対だめってわけじゃないけど, project1@googlegroups.com に再送 Resend すると, だれもが完璧にgroupを使いこなしたかのようなスレッドが記録されるでしょ.
これって再送 Resend の正しい使い方?
2012-03-16 Friday
■[web][python][はてな][Evernote]Movable Type または はてなダイアリー から Evernote への変換
やったこと
非公開はてなダイアリーを, Movable Type形式, Evernote XMLを経由してEvernoteにbatch importするPython scriptを書いた.
http://www.a.math.ryukoku.ac.jp/~hig/projects/mt2en/
余り役に立たない経緯の説明
他の人に見せない日記をブログの非公開モードを使って書くことがある. どの計算機(や携帯)でも書けるし, 読めるから. まあインターネット接続が必要だけど.
id:hig3 は 2006年くらいからはてなグループ http://g.hatena.ne.jp の有料の1人モードで日記を書いていた. はてなグループだと, 自分専用のキーワードを作れる. これをWiki的に使おうかと思ったのでダイアリーでなくグループを選んだ. しかし, 意外にキーワードの機能を使わないことがわかってきたので, 2009年にはてなダイアリー http://d.hatena.ne.jp/ の無料プライベートモードに移行した. 移行は容易で, データ管理から, はてな形式(XML)でエクスポート, インポートすればよかった(キーワードをたくさん作っていたら問題だったろう)
2010年からは, それまでのはてなダイアリーは更新を停止して, Evernote http://www.evernote.com で日記を書くようになった. どこでも読み書きでき, インターネット接続がなくてもある程度のことができるのでまあハッピー. しかし問題は, 過去の日記から検索しようとすると, はてなとEvernoteの2箇所を検索する必要があるということだった. Chrome の Web Clipper なら Web検索とEvernote内検索を同時にできるが, インターネット接続があるとしても非公開のはてなダイアリーをGoogleはindexしていないのだから解決になっていない.
どうすればいいか. はてなダイアリーのデータをぜんぶEvernoteに放り込んで一元化すればいいだけのこと.
採用しなかった作戦
- はてなダイアリーを1エントリずつWebクリップしてまわる.
- しょせん2600クリックくらいですんだはずだったんですけどね. ただ, その間はてなダイアリーを公開にしなければならないのが致命的.
- はてなダイアリーにEvernote Site Memoryを組み込んで(Zenback についてくる id:orangeclover:20101204)1エントリずつクリックしてまわる.
- しょせん2600クリックくらいですんだはずだったんですけどね. ただ, その間はてなダイアリーを公開にしなければならないのが致命的.
- はてなダイアリーを1エントリずつEvernoteの新規ノートにコピー&ペーストしてまわる.
- はてなダイアリーブックでダイアリーをPDF化(1回300円. http://www.hatena.ne.jp/info/hatenadiarybook )してEvernote のノートに添付.
- 意外に安かったのね(1回300円であって1ページあたり300円ではない). 検索は可能だろうが, ラベルをtagに対応させる, 日時をcreatedフィールドに対応させる, ようなことはできない. インポート後の編集は不便.
採用した作戦
Evernote Desktop は専用のアーカイブ形式, Evernote Markup Language, Evernote XML などと書かれているものをインポートできる. そこで, はてなダイアリーから何らかの形式(Movable Type形式 id:hatenadiary:20060418:1145327633をここでは選んだ)でエクスポートしたものをEvernote XMLに変換すればいいということ. 画像は, img要素の指している先をGETしてエンコードしてXMLに含めるのが正しいが, そこまでは気合いをいれないことにしておく.
作ったツール
■[web][python][Hatena][Evernote]Exporting from Movable Type, converting the data with a python script, and then importing into Evernote
http://www.a.math.ryukoku.ac.jp/~hig/projects/mt2en/ might help.
- 02/22 hig3
- 08/24 ぼっけー
- 03/14 hig3
- 04/06 hig3
- 03/14 kt
- 01/23 Hiram
- 01/23 Hiram
- 01/09 hig3
- 09/03 akiko
- 04/18 hig3