Gmailで全員に返信を忘れない方法
Posted in IT on 7 月 19th, 2010 by ishikawa – Be the first to comment複数人でメールをやりとりしている場合、返信を全員におこないたいのだけど、Gmailのインターフェイスは私信を前提としているようで、目に付くところにあるボタンは全員に返信ではなく返信で、これを使ってしまうと返信先にCCは含まれない。
一般的なローカルにインストールするタイプのMUAでは返信、転送、全員に転送が並んでいるもの(並べられるもの)が多いので、うっかり差出人にのみ返信するということはあまりないのだけど、そのような理由でGmailではうっかり差出人のみに返信してしまうのが日常茶飯事である。
共有しているつもりで共有されていないのだから、これはなかなかに面倒を巻き起こす。しかし、そう思っている人は少なからずいるようで、Gmailでも「返信」ではなく「全員に返信」を標準にできることを最近知りました。
単純に設定で変更できるのだけど、これがまたわかりにくいところにあるので紹介したいと思います。
Gmailの設定からLabsタブを選択し、「常に全員に返信」機能を有効にし保存します。Gmailが再起動(再アクセス)され今まで一番眼につくところに鎮座していた「返信」が「全員に返信」に変わっていることでしょう。
ラボ的機能というのはわかるのだけど、そういうくくりで分類されてしまうと全部の機能に目を通さないと存在を把握できないので、あそこまでLabs機能が増えると、あの設定画面はどうなのかなと思ってしまいます。
なにはともあれそういう感じで全員に返信が格段にしやすくなりました。UIって大切ですね。
vimを256色で使う
Posted in IT on 4 月 12th, 2009 by ishikawa – Be the first to comment年々開発環境周りに対する情熱というのが失せている。正確に言うと不要な事をしなくなるという感じで、遡ると以前は設定を弄るのが楽しくて設定していたという目的と手段が逆になっていた訳で、今が正常系という気はする。
という訳で、最近の設定ファイル事情は、他人のホームディレクトリからコピーするという手段が主流なのだけど、なぜかvimの256色表示だけできてなかった。この状態は気持ち悪かったのだけど、16色とかでも実用上はまず困らないので(黒字に青文字とかだけ)、アドホックに変更して過ごしていた。
とにかく256色表示というのはなんだか面倒だった記憶があったのだけど、今日やってみたらやたら簡単だった。時代なのか私が成長したのか…迷わず前者と判断できる所が空しい限りだけど、デフォルトでterminfoあたりが充実して来たのかなとか思う。
という訳でメモ。
1 2 | #~/.zshrc export TERM="xterm-256color" |
1 2 3 4 5 | "~/.vimrc syntax on colorscheme inkpot256 set t_Co=256 |
これだけ。簡単過ぎて何を面倒がっていたのか意味が分からない。根本的にterminalに対する理解が無いので多少なんとかしなければと思う。
捕捉:
colorscheme(desert256とかinkpot等)は .vim/colors にコピーするだけです。
colorschemeはvim.orgからダウンロードできます。
rubyで10進数と64進数を相互変換するモジュール
Posted in IT on 12 月 25th, 2008 by ishikawa – Be the first to commentrubyで基数変換する場合、標準では36進数までしか対応していません。これを64進数に対応させ、より短い数値表現を得ます。実例としてピンポイントですが、tinyurlのようなURL圧縮システムを作る時に役に立ちます。
他にも拙作のtDiaryテーマ生成サービスであるtDiary Custom Templateでは、作られたテンプレートに適当な名前をつけていますが、こういった場合にも使えます。
実際の所tDiary Custom TemplateはUNIX TIMEに番号が重複しない仕組みを付けた物を32進数に変換してるんですけど。この時に出来れば64進数にしたかったというのがこのモジュールを作ったきっかけです。(tinyurlも34進数ですが)
モジュール (bulkitem/enhance_base_convert.rb)
module Bulkitem module EnhanceBaseConvert CHARS = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "_", "-"] MAP = {"0" => 0, "1" => 1, "2" => 2, "3" => 3, "4" => 4, "5" => 5, "6" => 6, "7" => 7, "8" => 8, "9" => 9, "a" => 10, "b" => 11, "c" => 12, "d" => 13, "e" => 14, "f" => 15, "g" => 16, "h" => 17, "i" => 18, "j" => 19, "k" => 20, "l" => 21, "m" => 22, "n" => 23, "o" => 24, "p" => 25, "q" => 26, "r" => 27, "s" => 28, "t" => 29, "u" => 30, "v" => 31, "w" => 32, "x" => 33, "y" => 34, "z" => 35, "A" => 36, "B" => 37, "C" => 38, "D" => 39, "E" => 40, "F" => 41, "G" => 42, "H" => 43, "I" => 44, "J" => 45, "K" => 46, "L" => 47, "M" => 48, "N" => 49, "O" => 50, "P" => 51, "Q" => 52, "R" => 53, "S" => 54, "T" => 55, "U" => 56, "V" => 57, "W" => 58, "X" => 59, "Y" => 60, "Z" => 61, "_" => 62, "-" => 63} def self.dec2b64(val) val = Integer(val) ret = [] loop do break if val.zero? ret.unshift CHARS[val % 64] val = val / 64 end ret.empty? ? "0" : ret.join end def self.b642dec(val) ret = 0 chars = val.scan(/[0-9a-zA-Z_\-]/).reverse chars.each_with_index do |v, i| ret += (64 ** i) * MAP[v] end ret end end end
組み込みクラスの拡張 (bconv.rb)
require 'bulkitem/enhance_base_convert' class Fixnum alias :to_s_old :to_s def to_s(val=10) if val == 64 Bulkitem::EnhanceBaseConvert.dec2b64(self) else self.to_s_old(val) end end end class Bignum alias :to_s_old :to_s def to_s(val=10) if val == 64 Bulkitem::EnhanceBaseConvert.dec2b64(self) else self.to_s_old(val) end end end class String alias :to_i_old :to_i def to_i(val=10) if val == 64 Bulkitem::EnhanceBaseConvert.b642dec(self) else self.to_i_old(val) end end end
使い方。(ライブラリのロードパスが通っている前提で)
resuire 'bconv' b64 = "1OzGml0" dec = 123004872000 p b64 == dec.to_s(64) p dec == b64.to_i(64)
基数変換モジュールとして別になっているものを、bconv.rb で読み込んで Fixnum, Bignum, String をオープンクラスの仕組みを利用してメソッドを上書き(?)しているので、bconv を require すればそれだけで、36.to_s(64) とか “A”.to_i(64) などが可能になります。
コードを見ると分かりますが、64進数変換時の記号2文字に _- を採用しています。これはURLにそのまま使える文字(URLエンコードしなくてよい文字)にしたかった為なのですが、MIMEBase64で一般的な +/ 等に変更したい場合、対応表を弄るより以下の様な変換を噛ませるだけで十分な場合がほとんどだと思います。
4031.to_s(64).tr('_-', '+/') # +/ '+/'.tr('+/', '_-').to_i(64) # 4031
はてな人力検索の受け取り率といるか率を表示するグリモン
Posted in IT on 12 月 8th, 2008 by ishikawa – Be the first to comment回答者の受け取り率を回答を開く前に見るグリースモンキーはありますか?を見て作ってみた。回答が寄せられてないので作ってみたんだけど、他の人が作ってトラックバックしてるから誰も作って回答しなかっただけなんですね。あーあ。
Hatena Question Dishonest Checkerをインストールする
使った感じは以下の様になります。
受け取り率70%以下は相当酷くないとならないみたいなので、80%未満をレッド表示にしました。受け取り率90%以上は良回答者という事でグリーン表示になります。
他にも回答0(初回答)ユーザーと、いるか賞が一度も無いユーザーは、実績無しの一応気をつけましょう対象という事でイエロー表示にしました。
いるか賞率が10%以上の場合は良回答率の高いユーザーとしてグリーン表示します。
回答を投稿して気付いたんだけど、以下が現在の私の評価です。
/( ^o^ )\ なんてこったい
イエロー表示なんて気にする事無いよ!
PHPのnumber_format関数をjavascriptで実装する
Posted in IT on 12 月 5th, 2008 by ishikawa – Be the first to comment以下のPHPのソースをjavascriptで 実行したい場合は、どのように 記述すれば宜しいでしょうか? – 人力検索はてな を読んで。
要するにPHPのnumber_format関数をjavascriptで作って欲しいという話。javascriptで使いたいシーンというのを余り思いつかないのだけど、実装するのは別に難しくは無い。
一応PHPのnumber_formatを説明しておくと、例えば number_format(12000, 2) をすると、12,000.00 が返ってくる。位取りのカンマと数値の丸めを行う関数。詳しくはPHP: number_format – Manualを見てください。
これをNumberオブジェクトのメソッドとして number_format と同様に汎用性を持たせた物を追加して、フォーマットされた文字列を返すようにすれば、使いやすいはず。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Number.prototype.format = function(dec, c, p) { if (typeof(dec) == 'undefined') { dec = 0; } if (typeof(c) == 'undefined') { c = ','; } if (typeof(p) == 'undefined') { p = '.'; } var place = Math.pow(10, dec); var num = Math.round(this * place) / place; var values = num.toString().split('.'); if (values.length == 1) { values.push(''); } while (values[0] != (values[0] = values[0].replace(/^(-?\d+)(\d{3})/, '$1' + c + '$2'))); while (dec != values[1].length) { values[1] += '0'; } return values.join(p); } |
これを使うと以下の様になる。(引数の取り順が number_formatとは異なります)
1 2 3 4 5 6 | Number("+01344247.000570").format(1, ' ', ',');// 1 344 247,0 (フランス記法対応) Number("-01344247.000570").format(2);// -1,344,247.00 Number("+01344247.000570").format(3);// 1,344,247.001 Number("+01344247.000570").format(4);// 1,344,247.0006 Number("+01344247.000570").format(5);// 1,344,247.00057 Number("+01344247.000570").format(6);// 1,344,247.000570 |
この Number#format を使ってはてなの人力検索の質問を実装すると以下の様になる。
1 2 3 4 5 6 | function changePrice(bbb) { aaa = bbb.replace(/,/g, ''); aaa = Number(aaa/10000).format(2); return aaa; } changePrice("32546447");// 3,254.64 |
使うシーンが思い浮かばないとは言ったけど、表示した数値が変化する状況は良くあるので、ある程度大きな数値を扱うなら使う事もあるかもなぁ。
WordPressをアップデートする
Posted in IT, WordPress on 7 月 21st, 2008 by ishikawa – Be the first to comment最近WordPress2.6がリリースされました。早速アップデートしてみましょう。
アップデートはインストールしたファイルを置き換える事と同じです。重要な事は自分でカスタマイズしたファイルをきちんと移行するという点のみで、それさえ押さえれば難しい所は一つもありません。今回もFTPソフトを使って移行してみます。
まず始めに、WordPressのサイトから最新版をダウンロードします。圧縮されているので展開しておきましょう。ここまでは新規インストール時と同様ですね。
そしてファイルをアップロードします…が、直接上書きしてしまうと失敗した時に復元するのが難しいので、ファイル名を変更してからアップロードします。WordPressの関連ファイルは全てwordpressディレクトリ以下に収まっているので、このwordpressディレクトリの名前さえぶつからなければ問題ありません。(ちなみに wordpress ディレクトリにインストールされている前提です。blog 等他の名前のディレクトリにインストールしている場合は読み替えてください)
ここでは __wordpress という名前にします。 __wordpress という名前にするのは最新版のまだアップロードしていないファイルの方ですよ。念のため。
では早速ファイルをアップロードしましょう。ぶつからない名前に変更しているのでこのままアップロードします。アップロードが終了したら、自分でカスタマイズしたファイルを移行します。
自分がカスタマイズしたファイルは、コンフィグファイルと、プラグインやスタイル等になると思います。コンフィグファイルwp-config.php(prefixを変更している場合はwpが他の文字列になっています)はwordpressディレクトリの直下、プラグインやスタイルはwordpressディレクトリ直下の wp-content ディレクトリに収まっています。という事で、この wp-config.php と wp-content ディレクトリをダウンロードし、ダウンロードした物を __wordpress 直下にアップロードします。この時は上書きする事になります。
上書きが完了したら古い wordpress の構成ディレクトリである wordpress ディレクトリを _wordpress に変更します。これが古い WordPress のバックアップになります。そして今度は新版である __wordpress を wordpress に変更して置き換え自体は完了です。
最後にDBのアップグレードをブラウザから行います。http://yourhost.example.com/wordpress/wp-admin/upgrade.php にアクセスして指示に従って下さい。あっという間に終わります。
以上で終了です。一応プラグンやスタイルが引き継がれているか、上手く動作しているか等をざっと確認してください。バックアップしている _wordpress は新版のWordPressがきちんと動作している事が確認できたら、削除しても構いません。慎重な人はダウンロードして保存しておいても良いでしょう。
WordPressのURLをカッコ良くする
Posted in IT, WordPress on 6 月 22nd, 2008 by ishikawa – Be the first to comment前回の記事でアーカイブページのアドレスを短くしましたが、http://yourhost.example.com/?p=1 の ? 以降はクエリーといって、WEBアプリケーションにオプション値を与えて挙動を変更する為の記法です。
オプションを与えて挙動を変更するという事は、オプション次第でページの内容が変わってしまうという事であり、検索エンジンに好まれません(実際の所、オプションの数が少ない場合は特に問題にはなりませんが)。見た目にも格好が悪く余り好まれませんが、WordPress ではこれをすっきりとした奇麗なURLに変更する為の機能が標準で用意されています。
ちなみに、この機能は mod_rewrite というWEBサーバの機能を拡張するモジュールが導入されていないと使えない機能ですが、xreaを初めとして、ロリポップやさくらインターネットのレンタルサーバでは標準で対応しており、特に意識する事なく使えます。(上記以外のレンタルサーバの場合は mod_rewrite が使えるかどうか確認してください)
URLはパーマリンクという言葉もある様に、コロコロ変更する訳にはいきません。なので、この機能の導入はWordPressを導入したら出来るだけすみやかに設定するべきです。(もしくは設定せずにしばらく使っているのなら、もうそのままこの機能は使わないほうが良いかもしれません)
では、早速設定しましょう。
まず、設定タブを開き、パーマリンク設定を開きます。一般的な設定の中から好きなURL形式を選んで、変更を保存ボタンを押します。設定の流れとしては以上で終了です。
ここで重要なのはやはりどのURL形式を選択するかという事です。最も短いアドレスを望む場合は、カスタム構造のフォームに直接 /%post_id% と入力します。この場合は、http://yourhost.example.com/3 といった、記事番号だけのパスで、アクセスできます。
SEOの事を考えるとURLにキーワードが入っているというのは強力なので、/%postname%/ というのも捨てがたいです。しかし、日本語のタイトルはURLエンコード(%XX形式)される上に、UTF-8のマルチバイト文字は3バイトで表現される為、日本語で10文字のタイトルの場合10*3*3で90文字にも膨れあがってしまいます。
最近のモダンなブラウザはアドレスバーやステータスバーの表示をきちんと日本語で表示してくれたりしますが、メールにURLを貼付ける時や、ソーシャルブックマークへの登録等、やたらと長いアドレスは何かと面倒や見苦しさがつきまといます。
一応回避策もあって、通常postnameはエントリーのタイトルを元に生成されますが、個別に変更できるので英語の名前をつけ変える事も出来ます。ただし、これは大変面倒ですしうっかり変更を忘れて後から変更するとなると、URLの変更という事になります。記事ごとにpostnameを人間が設定するという運用は現実的には避けた方が良いでしょう。
また、%postname% を利用する場合、%postname% のみでは不可解なアドレス解釈で正しいURLとしてアクセスが出来ない事があるので、保険として %post_id% と併用する様にしましょう。
例えば、/%post_id%/%postname%/ とすれば、http://example.com/3/日本語 というURLが http://example.com/3/日本語 といったように英数字部分までしかURLとして解釈されず中途半端なクリッカブルリンクになったとしても、http://example.com/3/ だけで正しい記事にアクセスする事が出来ます。
それらを踏まえて、当サイトでは無難に /archives/%post_id% にしています。
追記:以下の様な話があります。欠番はどうでもいいのですが、データをリストアするとパーマリンクが変更になる様で、これは重大ですね。というわけで、リンク先のように年月日+タイトルに私も変更しました。
欠番や番号が飛んだ状態で WordPress 本体でエクスポートしてインポートすると投稿 ID がずれる(つまりパーマリンクが変わってしまう)
WordPress をインストールしたら最初にしておくこと – わーどぷれすっ!
URL形式が決まったら保存をしておしまいといきたい所ですが、mod_rewrite機能を使っているため、サーバにアドレス書き換えのルールを教えてあげる必要があります。 index.php を置いたフォルダに WordPress からの書き込みが可能な場合は WordPress が自動でその設定も行ってくれますが、多くの環境では書き込み可能にはなっていないでしょうから手動で設定する事になります。
という訳で、手動で行う場合ですが、mod_rewrite 用の書式は WordPress が用意してくれています。パーマリンク設定の一番下のテキストエリアのテキストがそれです。テキストエリア内の文字列を全てコピーし、テキストファイルに貼付けて、htaccess.htaccessという名前でローカルの適当な場所(例えばデスクトップ等)に保存してください。
そのファイルを index.php と同じフォルダにアップロードして、ファイル名を .htaccess に変更します。ファイル名が.から始まるファイルは不可視ファイルとして扱われるので、FTPクライアントの設定によっては.htaccessに変更したとたん、あたかも消えてしまったかの様に感じる事があるかもしれませんが大丈夫です。消えてしまった場合はFTPクライアントの設定で、不可視ファイルを表示するとか.で始まるファイルを表示すると言った様な趣旨の項目を変更してみてください。
なお、アップロード完了後はデスクトップのhtaccess.htaccessは削除して構いません。
以上で設定完了です。ブログのトップページにアクセスして、そこから個別記事に移動してみてください。アドレスが指定した形式でリンクされているのが確認できると思います。
WordPressのアーカイブページのアドレスも変更する
Posted in IT, WordPress on 6 月 22nd, 2008 by ishikawa – Be the first to comment前回は、WordPressのトップページのアドレスを変更しましたが、個別ページは相変わらず http://yourhost.example.com/wordpress/?p=1 になっていますね。
今回は、これを http://yourhost.example.com/?p=1 という形式に変更してみましょう。この変更は設定画面からの変更のみで非常に簡単に行えます。
まず管理ページにログインし、ダッシュボードが表示されたら設定タブを開きます。すると、一般設定がアクティブになっているはずです。
そのページの ブログのアドレス を http://yourhost.example.com に変更して(もちろん自分のアドレスに変更してください)変更を保存ボタンを押して保存します。
以上で http://yourhost.example.com/?p=1 形式でアクセスできるようになっているはずです。確認してみてください。
WordPressのトップページのアドレスを変更する
Posted in IT, WordPress on 6 月 22nd, 2008 by ishikawa – 4 Commentsインストールを wordpress フォルダに行った為、URLが http://yourhost.example.com/wordpress/ になっています。他のコンテンツがある場合等はこれでも構わないでしょうが、ブログがメインなサイトの場合は http://yourhost.example.com/ にアクセスしたらブログが表示されて欲しいでしょう。
そういった場合は wordpress フォルダではなく、DocumentRoot 直下にインストールするしか無いのでしょうか?
わざとらしい前振りですが、その必要はありません。早速 http://yourhost.example.com/ にアクセスした場合にブログが表示される様に変更してみましょう。
まずはブログをインストールしたフォルダにある index.php をダウンロードして編集します。もちろん、インストール用のファイルが残っている場合はそれを編集しても構いません。ダウンロードする手間が省けます(たったの1ファイルなので些細な手間ですが)。
この index.php ファイルは以下の様な内容になっていると思います。
1 2 3 4 5 | <?php /* Short and sweet */ define('WP_USE_THEMES', true); require('./wp-blog-header.php'); ?> |
この 4行目を以下の様に変更します。
1 2 3 4 5 | <?php /* Short and sweet */ define('WP_USE_THEMES', true); require('./wordpress/wp-blog-header.php'); ?> |
例に沿って wordpress としていますが、blog というフォルダにインストールした場合は ./blog/wp-blog-header.php になります。
変更を保存後、このindex.phpファイルをトップページにしたい場所にアップロードします。http://yourhost.example.com/ にしたい場合はDocumentRoot直下(例えばpublic_htmlやhtdocs)です。
アップロードしたら早速 http://yourhost.example.com/ にアクセして確認してみましょう。 きちんと表示されていたら成功です。
ここまで作業を終えると、どうせなら初めから DocumentRoot に WordPress をインストールすればいいのにと言った疑問が沸いてくるかもしれません。何故 DocumentRoot にインストールしないかというと、ルートフォルダは何かのファイルを置く場合に必ず起点になりますから、どうしても WordPress 以外のファイルも置く事になりがちです。
そういったファイル混在状態でWordPressのバージョンアップが必要になった場合、誤って WordPress 以外のファイルを削除したり、上書きしてしまったり、または既に必要なくなったふるい WordPress のファイルが残り続けたりする原因となります。
その点、wordpressフォルダにインストールしておけば、古いwordpressフォルダをリネームしてバックアップしつつ、新しいwordpressフォルダをアップロードするだけで済みます。
そういったわけで、可能な限り上位のフォルダを散らかさない様にしましょう。




