2011年12月7日水曜日

MySQL 5.5でAUTO_INCREMENTを使うとERROR 1075が出る

MySQL 5.5.17を使っているが、ちょっとハマった。
以前のバージョンで動いていたDDLのCREATE TABLEでエラーがでる。
mysql> CREATE TABLE test
-> (
-> id VARCHAR(20) NOT NULL,
-> number INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (id, number)
-> );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

AUTO_INCREMENTはキーでないとダメらしい。
いや、プライマリキーに指定しているのだが...?

データベースエンジンをmyisamに設定すると通った。
mysql> set storage_engine=myisam;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE test
-> (
-> id VARCHAR(20) NOT NULL,
-> number INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (id, number)
-> );
Query OK, 0 rows affected (0.00 sec)
たしか、MySQL 5.5あたりから、デフォルトのデータベース形式がMyISAMからInnoDBに変わったような気がするが、それが原因かもしれない。
だけど、同じSQLが通らないというのは、MySQL5.5はまだ不安が多いかも。

2011年12月5日月曜日

口臭とプラーク徹底根絶 おすすめフロスと使い方

少し前の記事では歯間ブラシについて書いたが、さらにデンタルフロスを使い始めた。
細い紐というか、糸のようなもので、歯の間に入れて、歯の側面を磨くためのものだ。
ジョンソンアンドジョンソンというメーカーのものを購入してみた。

一本一本の歯の間を磨いていくのだが、手に持つフロスがすべって非常にやりにくい。
そう思っていたら、どうやら、指に巻きつけるとよいらしい、中指に2~3回巻きつけてやってみるとすべらなくなった。
一ヶ所の歯の間を磨くと、次を磨くときはフロスの別の部分を使う。菌が移るのを防ぐためらしい。それで、長さは上の歯だけで、50cmぐらい、下でも同じくらい使ってしまう。慣れるともっと短くできるらしいが、まだまだ練習が必要なようだ。

今は、ブラウンの電動歯ブラシで磨いた後、ポイントを磨く歯ブラシで磨き、さらに歯間ブラシで磨き、そしてフロスを使っている。さすがにフロスの段階までくると、もう汚れがないかと言えば、そうでもない。奥歯でフロスを使っていると、何か食べかすが出てきたことがある。歯ブラシでも歯間ブラシでも届かない、隣の歯と接触しているコンタクトポイントと呼ばれる箇所が磨けていないのだ。

さらにフロスで歯の側面の歯周ポケットを、ある程度磨けることを期待している。歯の間の歯茎はその周囲より高い位置にあることから、フロスをうまく当てることで、歯周ポケットに入り込むことがある。

そして、奥歯の奥も磨けてしまう。一番最奥の歯の奥側のしかも下の方というのはどうやっても磨きにくい。ポイント歯ブラシで磨いているが、フロスの方が強力だ。奥歯の奥にフロスを引っ掛けて磨く。この方法だと歯茎の位置まで磨ける。

歯ブラシではプラークが50%程度残ることがあるらしいが、フロスを使うことで10%程度まで減らせられることがあるらしい。
こうなってくるとプラークを根絶したい気分だが、私の場合は、仕上げに歯科医院で購入した、うがい薬で対抗していることにして、納得している。

直帰率改善とリピーターを求めるウェブサイト運営者殿へ

おもしろいブログを見かけた
ウェブサイトのリピーターを獲得するには、なにかを強要するなというのだ。
例えば、掲示板やコメント、ゲストブックに投稿することを求めたり、リンクを張るなら連絡するように求めたりすることを強要してはならないという主張である、。
そのようなことをすれば、訪問者の感情を逆なでするため、リピーターになってやるものか、ということである。
これは一理あり、またそうでもないこともあるだろうとも思う。

人間は感情で動くものである。物を買うにしても、人とのコミュニケーションにしても、感情が大きく影響している。それゆえに、人の共感を得られるようにすることは、ウェブサイトにおいても有利に働くことがあるだろう。
リピーターとなる訪問者を増やすという狙いがあるなら、むやみに強要するようなことは得策ではない(もちろん、リピーターを増やす意思がないなら関係ないかもしれない)。

私などは、ウェブサイト運営者の気持ちも察することができる面があるので、何かを書けといわれたら、書かせてもらってもいいし、リンクを張るときに連絡が必要だというなら、連絡することを受け入れないではない。それにもう少し、冷静に多面的に考えるかもしれない。
だが、多くの訪問者は訪問者側の立場、一点で物を見ている。

出所が分かるのであまり詳細に書かないが、先ほどのブログではホームページの訪問者を客であるとして例えられた文章も書かれていた。
ホームページの訪問者はホームページ運営者に情報料等のなんらかの対価を支払っているかということもあるので、客と言えるのか疑問としてあるが、どちらにしてもここで注目すべき点は、少なくとも客かそれに近い立場だと考えているということである。
このような発想はけっしてめずらしい事ではない。
それが、個人のウェブサイトであったとしても、訪問者はまるで客のような立場で見ていることが少なくない。

リピーターを求めないウェブサイトであれば、なんとでもできるのだが、もし少しでもリピーターを獲得したいならば、最初にウェブサイト自体のコンテンツに魅力があることを前提に、こうした訪問者に対する強かな運営も必要だろう。
いくらリピーターの欲しいウェブサイトであっても、クレーム等を行なってくるユーザーはその時点で必要なくなる。対応にかかる手間と、たった一人のリピーターによる利益では、割りに合わないからだ。一人ぐらいのリピーター減はウェブサイトから見てたいして影響がない。しかし、それを表立って表さない方が賢明だ。この手のユーザーは、感情で動くということからも分かるように、あまり頭脳的ではない。感情を逆なでせず、適当に相手を立てておいて、手早くあしらっておくのがよい。最初の時のクレームで怒りの感情を晴らしているので、ほとんどの場合すぐ収まる。
表向きには、あくまでユーザーサイドに立った表現を使う。

ただし、人は強要されないとできないということもある。公平さの確保や、利益を最大化するために、制限を強要するようなことは考えられる。利用者は、あくまで利用者の立場で発言する。利用者の声をすべて聞いていては成立しないこともあるのには注意したい。

沖縄防衛局長の発言の本質は沖縄に基地を作るということ

沖縄防衛局長が、環境影響評価書の提出に関して「犯す」という単語の含まれた発言をしたことで、話題になっていた。
この「犯す」という単語は婦女暴行を意味した例え話として使われたものと思われるが、言い回しに品がない。特に沖縄では以前、米兵による少女に対するわいせつ事件があったことが連想されるのもイメージが悪い。
同じ事を言うにも、柔らかい表現にしておけば、何の問題もなかったかもしれないが、うっかり当たり障りのあることを言ってしまったのだろうか。
ひょっとすると、局長にとって回答しにくい記者の質問に対する返答として、機嫌の悪い回答をしてしまったのかもしれない。

だが、しかし、所詮感情論だ。私に言わせるとくだらない。
この件に関する沖縄県知事の言動は、見た目とは裏腹に(失礼!)聡明な言動をしてきたこれまでの知事を思うと違和感を感じる。

沖縄県知事は今まで、沖縄県の基地受け入れについて、そうしたことができるような環境になっていないことを主張し、基地受け入れを拒否してきていた。
これは基地を受け入れさせたいのであれば、政府がそのための環境を作れ。ようは、求めるのなら、求める立場の努力で、沖縄県民が納得できる状態にしろということを暗に言っているのだ。立地場所か、金銭等を含む経済的な解決か、政府から沖縄県民の方を向いてお願いする心理作戦か、何が有効か分からないが、知事としては県民が反対する以上、知事も反対しないとしかたない立場なのだから、知事にYesと言わせたいなら、政府が妙案を自分で考えて県民の気持ちを変えてくださいと、言っているのだ。
これは、県民を代表する知事の立場を考えれば、筋の通った理にかなう構えであると思っている。
だからそんな知事には、うっかり口のすべった、まだまだ人生のあるたった一人の人の発言の1単語のことよりも、冷静で、見抜いた発言を期待してしまうわけだが、まあ、今は県民向けのパフォーマンスとしての意味もあるかもしれないということで納得しておいてもよい。

何が問題かというと、沖縄防衛局長が言っている内容が「沖縄にとって言い難いことは言わずに、しれ~と、ことを進めるのが当然だ」と言っているようにとれることの方が、はるかに大きい。
大人の世界や、交渉ごととして、そういう進め方があるということを、もっともとして考えることもいいが、沖縄県民の立場から見れば、正直でないやり方をしようとすることの方が、腹立たしいのではないだろうか。
政府は、沖縄県民に正面から向き合うつもりはなく、無視したり、知らん顔してやってしまおうというようにもとれるのだ。

また、沖縄県は県内に基地を作ることが決まったわけではないという立場ではなかっただろうか。
だとすれば、、先の沖縄防衛局長の発言は、そもそも意味が分からないことになるような気がする。まるで沖縄県に基地を作るつもりで、そのために事前には言わないとでも、言っているように聞こえるからだ。
沖縄県民が少なくとも現状において沖縄県に基地を作ることを許した覚えがないのであれば、何を犯すのだろうか?

そして、これら上記のことを含めても、よく分かるのは、何にしても日本政府は沖縄に基地を作るつもりだということ。それが当然のことのように進んでいることが垣間見えただけだろう。

アクセス解析で見る痛々しいキーワード

私は複数のウェブサイトを運用していて、それらにはアクセス解析を導入している。
アクセス解析ではGoogleやYahoo!から訪れた訪問者の具体的な検索キーワードを知ることができる。
また、サイトの中で、人気のあるページとそうでないページに偏りが出るのが分かる。

ちらほら見かけるのは痛々しい訪問者。
・労や代償を払わずして、ものを得ようとしているもの。
・ルールを破る方法を知ろうとするもの。
等々・・・セコさ、エゴイスティックさ、意地汚さ、情けなさ、様々なことを察してしまう。

特に多いのが、無料やフリーというキーワードで、他の語句と組み合わせて使われる。
たいていは、あり得ないうまい話を探しているのが見え見えである。

私は日頃から、こうしたものを見ていて、様々なことを考えさせられる。
ビジネス的に考えると、言い方は良くないが、あまり賢くない人達を、騙すとまでは言わないまでも、うまく利用することも手であろうということ。
また、こうした人達がインターネットの世界で、騙される人達だろうと。

質問サイトで質問を削除する もうそれが当たり前の時代

Yahoo!知恵袋という、ウェブサイトがある。
様々な質問をすると、答えてくれる人がいるというサービスだ。
質問する側も答える側も、同じサイトの利用者だ。ギブアンドテイクというか、ユーザー同士で問題を解決しようというコンセプトだろう。質問する側のモチベーションは分かるが、回答する側は人に親切にすることで気持ちよくなるのが目的かもしれない。あるいはシステム的になにかあるのかもしれないが、実はよく分かっていない。私はほとんど利用したことがないのだ。
それでも、以前にYahoo!知恵袋だったか、あるいはどこか別の似たようなサイトだったかもしれないが、私も質問に回答したことがある。もうどういう内容かすら忘れた。同じ質問に私以外にも回答をしていた人はたくさんいた。
しばらくすると、そのウェブサイトのシステムからメールが送られてきた。質問者により質問が削除されたという内容だった。この瞬間にバカバカしくなった。

質問者にとっては、問題を解決することだけが目的なのだ。自分自身の問題が解決されればそれで満たされるということだ。
削除せずとも、その質問項目が残されれば、今後同様の質問をしたい人がいた場合や、何かの質問に回答する人の役に立つことがあるかもしれないのだが、質問者からみたらそのようなことに関心がない。あくまで自分のことだけしか考えていない。
むしろ、質問が残ることは邪魔なのかもしれない。
せっかく回答をしても、削除されてしまうのでは、やってられない。
他の人のことや、回答者の気持ちを考えれば、削除する行為というのはあまりにも利己的だ。
私は、なぜ削除できるようになっているのか、システムに疑問にすら思う。

どうやら、こうした事は現在のインターネットの世界では常識なようである。このような無神経なことが、インターネットでは通常に行われている。
インターネットの初期やパソコン通信の時代には、ネットのマナーもよく叫ばれていたことだが、現在ではほとんどそうした話を聞かない。

人々にとってインターネットは、検索すれば答えてくれる便利な道具なのだ。しかも無料である。
検索の結果、表示される情報は、誰かが作ったものであるし、先ほどの質問サイトであれば、誰かが答えてくれているのだが、もはやそのようなことは意識されない。インターネットの先に人の存在を感じていない。
すべての人がそうではないし、どちらかといえば少ない人達かもしれない。だが、それなりの割合で含まれており、油断していると憤りを感じるような目に遭わされる。

2011年12月3日土曜日

モスバーガーの胡麻だれチキンバーガー

私はハンバーガーを食べる方ではないが、いちおうモスバーガー派だ。
そんなモスバーガーで、今やっている期間限定商品は胡麻だれチキンバーガー、340円。
ちょっと前はゴージャスな焼きトマトのを食べた気がするが、今回のはお値段も手が出しやすくなった。

今日の昼食はこれにしよう。
さっそく、ドライブスルーでさらっと買ってきた。

中身は、柔らかい鶏肉がメインで、たまねぎとレタス、マヨネーズがかかっている。
あれ?胡麻だれは?たまねぎと鶏肉の間にあるのかな。
でも、胡麻だれよりマヨネースの味が勝っている気がする。
まあマヨネースの味がテイスティなのでOKだ。

ついでにモスチーズバーガーも購入、350円。
上から、トマトの輪切り、玉ねぎのみじん切り入りソース、チーズ、ハンバーグの順。
これは、ソースがこぼれやすいので上級者むけだ。

YouTubeのデザイン一新と映画配信サービス

つい2、3日前にYoutube Analyticsが始まったと思ったら、YouTubeがさらにグレードアップしたようだ。

1.デザイン一新
最近、あらゆるGoogleのサービスでデザインの移行が行われている。GoogleのソーシャルネットワークサービスGoogle+の一環かもしれない。
そして、今回YouTubeにもデザインの変更が及んだ。

特にトップページが大きく変更された。左側に大きくカテゴリごとのメニューが表示されるようになった。
今までどちらかと言えばあまり活用できていなかったカテゴリだが、目立つようになったことで思いがけない動画やマイナーなカテゴリにも目が向くようになりそうだ。
ログインした状態だと、トップページのままで自分のアップロードした動画や「高評価」「再生履歴」「後で見る」といった動画の一覧を表示することができる。さらに登録リストの一覧もあるので、基本的な閲覧操作はほとんどこのメニューだけでできてしまう。私はあまり使わないと思うが、Google+とFacebookへの接続メニューもあるようだ。最初から自分用のカスタマイズメニューになっているような感じで便利だ。

自分のチャンネルページを作っている人は、そちらも新デザインに移行することができる。以前のデザインのままにしておくこともできるので、時間があるときに作りなおす猶予がある。今までチャンネルページを作りこんでいた人は、また作りなおすのがちょっと面倒ではある。

こうした変更があると、今までと操作方法が変わることで、腹を立てる人がいる。
YouTubeに来たユーザーは、新しい操作方法を学習したいのではなく、動画を見たり、アップロードすることが目的だ。その目的の前に操作方法を理解するという余計な手間が増えて、イライラするのだ。
しかし、どのようなことでもいつまでも同じ状態のままで、進化を怠るということはできない。こうして日々追加、変更、修正されながら、より良くなっていくものだろう。今後もそうであるから、この新しいデザインへの提案があれば、フィードバックを送信するのも良いかもしれない。そのために、今、YouTubeに行くと画面右下にフィードバック送信へのリンクが用意されている。あくまで感情的な痛い苦情ではなく、意欲的なものであればだが。

2.映画の有料配信
ハリウッド映画やアニメの有料配信によるレンタルがスタートしている。新作が400円、旧作が300円となっており、再生開始後の24~72時間がレンタル期間になる。
似たようなサービスでHuluがあるが、あちらは月額で、こちらは一本ずつのレンタルという違いがある。ちょっと暇な時に見るのには、お手軽で、YouTubeの価格体系の方がユーザーから見ると取っ付き易いだろう。
Huluとしては脅威に感じるかもしれない。
今後はさらなる画質の向上とラインナップの充実を期待したい。

光ポータブルPWR-100Fでso-netモバイル3Gの接続設定

光ポータブルPWR-100Fでso-netモバイル3Gの接続設定

光ポータブルPWR-100Fでso-netモバイル3Gを使用する際の設定方法を示す。

so-netから送られてきた入会証を用意し、simカードをルーターにセットする。
設定画面を開いてログインし、上部のメニューから「Internet/LAN」→「Internet(3G/HSPA)」を選択する。

各項目を以下のように入力する。
----------
Internet(3G/HSPA)接続:使用する

3G/HSPAモデム:内蔵 3G/HSPAモデム
キャリア選択:NTT docomo
接続方式:他社プロバイダー
PDP Type:IP
APN(接続先):st.so-net.ne.jp
PIN:設定しない
ユーザー名:入会証の接続用ID xxx@xx9.so-net.ne.jpのような形式
パスワード:入会証の接続用パスワード
3Gスケジュール機能:「使用する」のチェックをオフ

[拡張設定]
認証方式:CHAP認証のみ
DNS(ネーム)サーバーアドレス:設定しない
MTU値:1500
----------

「設定」をクリックして再スタートし、しばらくしてWIRELESSのLEDが青色に変われば接続されている。赤色は接続できていない。
緑色だと無線LANの方に接続しているので、上部のメニュー「Internet/LAN」→「Internet(無線LAN)」から「Internel接続(無線LAN)」の「使用する」のチェックを外して無線LANを無効にして行う。

もしもうまくいかないようなら、一項目、一文字ずつ、大文字小文字、全半角等を含めて慎重に確認する。
私は、この設定でうまくいっているので、特定の人だけ特殊な状況になっているとは考えにくい。必ず何かが間違っているはずなので、まずは徹底的に自分のした設定と思い込みを疑おう。

2011年12月2日金曜日

SQL ServerのSQLで西暦を和暦に変換する方法

SQL ServerのSQLで8桁のYYYYMMDD形式の西暦を和暦に変換する。
select case
when BIRTHDAY > '19890107' then '平成'
when BIRTHDAY > '19261224' then '昭和'
when BIRTHDAY > '19120729' then '大正'
when BIRTHDAY > '18680124' then '明治'
else '0'
end 年号,
case
when BIRTHDAY > '19890107' then BIRTHDAY - 19880000
when BIRTHDAY > '19261224' then BIRTHDAY - 19250000
when BIRTHDAY > '19120729' then BIRTHDAY - 19110000
when BIRTHDAY > '18680124' then BIRTHDAY - 18670000
end 年月日
from (select '19990123' BIRTHDAY) DUMMY
実行結果は以下の通り
年号 年月日
---- -----------
平成 110123

(1 行処理されました)
年号と和暦の年月日を出力する。
このSQLでは年号を「平成」とか「昭和」という文字列で出しているが、実際はコードに変換するようなことの方が多いかもしれない。

西暦4桁の年だけで和暦に変換するには基準となる年月を定める必要がある。
select case
when BIRTHDAY >= '1989' then '平成'
when BIRTHDAY >= '1926' then '昭和'
when BIRTHDAY >= '1912' then '大正'
when BIRTHDAY >= '1868' then '明治'
else '0'
end 年号,
case
when BIRTHDAY >= '1989' then BIRTHDAY - 1988
when BIRTHDAY >= '1926' then BIRTHDAY - 1925
when BIRTHDAY >= '1912' then BIRTHDAY - 1911
when BIRTHDAY >= '1868' then BIRTHDAY - 1867
end 年
from (select '1999' BIRTHDAY) DUMMY
実行結果
年号 年
---- -----------
平成 11

(1 行処理されました)
この場合12月24日~12月31日のいずれかの日を基準とする場合には正常な結果になるが、それ以外で使うには、上記SQLの数字部分を書き換える必要がある。

Linuxカーネルのバージョンを確認する

yum updateをする際に現在のカーネルのバージョンを見たかったので以下のコマンドで調べた。
uname -a
以下のような結果が表示される
Linux hostname 2.6.18-274.7.1.el5 #1 SMP Thu Oct 20 16:21:01 EDT 2011 x86_64 x8
6_64 x86_64 GNU/Linux
カーネルバージョンは 2.6.18-274.7.1.el5 だと分かる。

unameはシステム情報を表示するコマンドで、オプションの指定により、マシンタイプ、ホスト名等の情報を見ることもできる。

光ポータブルで有線LAN、無線LAN、3Gを自動切り替え

so-netモバイル3G」を使うためにNTTの「光ポータブル」というサービスに申し込んだ。
「光ポータブル」はモバイルWi-Fiルーターのレンタルだ。NTTの光回線を契約している場合に、315円追加することで使うことが出来る。
このルーターはNTT docomoのFOMAデータ通信やイー・モバイル、ぷららモバイルでも使うことができる。
このルーターは、二通りの使い方がある(ルーターの機械的なスイッチで切りかえる)。
1.LAN側を無線LAN、WAN側を、3G、無線LAN、有線LAN
2.LAN側を有線LAN、WAN側を、3G、無線LAN
きっちり頭の中を整理しないと、ややこしい。

1の場合、パソコンとルーター間は無線LANで接続し、ルーターから先を3通りから選択できる。

ひとつは有線LANで、ADSLモデムや光回線のONUに直接つなぐルーターモードと、ルーターをブリッジモードに切りかえて、既存のLAN内に追加する形で使うことができる。既存のLANから先にインターネットがつながっているのであれば、パソコンからルーターを経由してインターネットにもつながる。
2つめは、無線LANのアクセスポイントにつなげることができる。これは市販のアクセスポイントを持った無線LANルーターの他、公衆無線LANも設定できる。これらアクセスポイントは複数設定できるので、その場に応じて、最適なアクセスポイントを選択させることができる。自宅にいるときは、自宅の無線LANアクセスポイント、外出先にいるときは、それぞれの場所に応じた公衆無線LANを使うといったようにだ。認証はIEEE802.1x/EAP、WPA-PSK、WPA2-PSK、WPA-EAP、WPA2-EAP、暗号方式はWEP、TKIP、AESに対応している。
3つめの3Gは、NTT docomoやイー・モバイル等の3G回線に接続する。私の場合ここがso-netの回線となる。ただし設定できるのは1つだけなので、複数回線を自動で切りかえるようなことはできない。3Gスケジュール機能というのがあって接続時間帯を制限することができる。時間帯によっては従量制に切り替わる契約プランを行なっている事業者への対応だ。

一般的に、通信速度や通信コストは、有線LAN > 無線LAN > 3G の順になることが多い。
パソコンとルーター間はいつも無線LANで、ルーターから先のWANについては、有線LANが使える時は有線LAN、それが使えないときは無線LAN、それもダメなら3G、と使い分けることができる。
ただし、有線LANのコネクタはルーター本体についておらず、充電器を兼ねたクレイドル側にあるため、外出先で有線LANを使うということはできないと考えた方がよい(クレイドルも持って出ればできる)。
以上のことから、自宅では有線LANか無線LAN、外出先では無線LANか3Gというのが、通常想定される使い方になるだろう。
ルーターをクレイドルに乗せると、有線LANが使われるのは分かるが、無線LANと3Gの場合、どちらを使うかという選択についても通常はルーターに任せておけばよい。カスタマイズしたいなら「接続性優先モード」「無線LAN優先モード」も用意されている。
このように、一回ルーターさえ設定すれば、その場に応じて3種類の回線を自動的に使い分けしてくれる。

もうひとつの2の使い方の場合は、クレイドルの有線LANポートを使って、パソコンとルーター間を有線LANで接続する。
こちらは唯一の有線LANポートが使われてしまうので、WAN側を有線LANにはできない。またクレイドルが必要なので、持ち運びには不便となる。

このルーターPWR-100FはbuffaloからDRW-PGとしても販売されている。定価37,000円、実売で2万5千円ほどする。
レンタルで2年使ったとして315円×24ヶ月=7,560円。普通はレンタルの方が得だ。ただし2年以内に解約すると解約料7,530円かかる。あくまで借り物なので、使い終わったら返さなければならないし、破損すると弁証だ。

サイズや重量は、こんなものだろうと思う。
表面はザラつきのあるブラックで、プラスティッキーなところが、ちょっと安っぽい感じはする。
ポケットやかばんにすっぽり入るサイズなので、パソコンと一緒に持ち運ぶのに、それほど負担にはならない。
かばんやポケットに入れっぱなしで、ノートパソコンを開くと、Wi-Fi接続を受けたルーターが勝手にスタンバイから復帰して、意識することなくインターネットにつながる環境ができる。
バッテリーも1日ぐらいは持つようだ。万一のときはケーブルがあればUSB給電で充電できる。

無線LANが54Mbpsまでしか対応していないので、自宅のメインのルーターの代わりとして使うにはちょっと力不足ではある。
このあたりのことを考えるとやはり光ポータブルでレンタルでよいように思う。

2011年12月1日木曜日

so-netモバイル3Gの使用感 実測値 ぷららと比較

so-net モバイル 3G」というNTT docomoのFOMA回線を使用した通信サービスを利用している。
下り最大14Mbps、上り最大5.7Mbpsで、月額2,770円 + ユニバーサルサービス料7円 + モバイルコース月額210円 = 2,987円となる。
初期費用3,150円と初月分は無料になるキャンペーンで申し込みをした。

Xperiaやタブレット端末、ノートPCの対応機器であれば、そのまま使えるが、それ以外の場合はモバイルルータを使う。
私はNTTの光ポータブルを利用している(今は、日本HPのモバイルWi-Fiルーターを14,800円(キャンペーン価格)で購入する方法もある)。
光ポータブルはすでにNTTの光接続サービスを契約している場合、月額315円で使うことができる。
つまり、so-netに支払う2,987円 + NTTに支払う315円 = 3,302円がトータルの月額になる。

so-netもNTTも両方、2年縛りがあって、解約に費用がかかるので注意したい。
また、so-netのsimカードはすぐに送られてくるが、NTTの光ポータブルはルータが届くまでに数週間かかる。

plalaでも似たようなサービスとして「ぷららモバイル」というのをやっている。下り最大1.5Mbpsと少し通信速度が遅いが、転送量制限がない。
その他の選択肢として、WiMAXやe-mobileがあったが、エリアの広さが決めてでNTT docomoとなってしまった。
WiMAXやe-mobileの主な提供エリアである都市部なら、公衆無線LANサービスを探す手もあるのだが、肝心な地方に行った時に困ることになる。その可能性もある私の場合、どうしてもエリアが広くなくてはならない。

通信速度は測定するサイトや時間帯にもよるが、最大2Mbps程度、低い時は700kbps程度出ていた。
光ポータブルとパソコン間はWi-Fiで54Mbpsまで使えるのだが、実は光ポータブルのルーターの3G側が7.2Mbpsまでしか対応していないので、14Mbpsはどっちみち出ないとしても、7.2Mbpsで頭打ちとなる。

so-netモバイルはとてもいいサービスに思えるのだが、最大の難点は通信速度制限だ。
「3日間の合計通信量が、150万パケット(192Mバイト相当)に達した場合、通信速度を制限する場合があります。」
という注意事項だ。
まだ、150万パケットを超える転送量を使ったことはないと思うので、実際どうなるのか分からないが、どうもかなり速度が落ちるのではないかというウェブ上の情報がある。しかも「通信速度を制限する場合がある」というよりは「本当に通信速度を制限する」が実際の運用っぽい。
また、現在どこまでパケットを使ったかを確認するためのウェブページも用意されていない。光ポータブルのルーターに通信パケット数を表示する機能があるが、これが3Gのパケット数か、TCP/IPのパケット数を表すのかは分からない。
3日で150万パケット、1日50万パケットという量が微妙だ。動画は怖くて見られない。

光ポータブルのルーターが7.2Mbpsまでだし、実測値も高くて2Mbpsということを考えれば、最大1.5Mbpsとはいえ、転送量制限のないぷららモバイルにしておけば良かったような気がする。ただ解約料がso-netの9,975円に対して、ぷらら15,750円と少し高い。だが、ぷららは2年経過すると解約料がなくなるので、どうせ2年は使うだろうし、その先のことも考えると、やはり、ぷららモバイルの方がよさそうだ。
ぷららモバイルの実測値が分からないのでなんとも言えないが、もしも1Mbps近く出るのであれば、それで良いかもだ。

私の場合は、長時間だらだら使うというよりは、短時間にサッと使うことが多いと思うので少しでも早い方がいいのはいい。また、ノートパソコンをずっと起動しっぱなしだとしても、自動通信しているのはメールチェッカーくらいで、他に勝手にアップデートチェックするようなものがあったとしても、それほどの転送量はないと思う。私の使い方であれば、たぶんso-netでも大丈夫だろう。
転送量制限が現実のものになって困ることがあるまでは、このまま使い続けようと思うが、2年後には解約しそうな気もする。その後また2年縛りが始まるからだ。さすがに4年後はモバイル環境が様変わりしているのではないだろうか。

YouTubeのインサイトがYouTube Analyticsに変更された

YouTubeにアップロードした動画の再生状況を見ることができる「YouTube Analytics」というサービスが開始された。
YouTubeに動画をアップロードしているユーザーが使うことができる。
いわば、ウェブサイトのアクセス解析Google AnalyticsのYouTube版だ。
以前から「インサイト」という機能があったが、それが強化され、最近のGoogleウェブアプリライクなデザインになった感じだ。
性別と年齢層の分布や、動画の視聴者維持率等、インサイトにあった機能の他、高評価、低評価、コメント、共有数、お気に入り追加、お気に入り削除といった個別の要素の推移をグラフ化することができる。
加えて、日別、週別、月別といった時系列の集計単位、統計情報の比較もできる。
機能が豊富になっただけでなく、グラフがカラフルで大きく見やすくなったことや、シンプルで洗練されたインタフェースになったことで、全体的に使いやすくなった。

地域別の解析では、世界地図上で国別の再生状況を色分けで見ることができる。ただ、さらに掘り下げて都道府県単位までは見ることができなかった。Google Analyticsでは都道府県単位まで見ることができるので、YouTube Analyticsでも、いずれ対応されるかもしれない。

何か操作するたびにアニメーションするのは好みの問題があるが、素早い動きなのであまり気にならないだろう。
その他、ログインした時のトップページやメニュー表記等、細部も変更されているところがあるようだ。

やはり、GoogleとしてはChromeで使うのをお勧めしたいのだろうが、IE9でも問題なく表示されていた。一回、反応しなくなることがあったが、F5キーを押して再表示すれば、問題はなかった。

YouTube Analyticsに変わったことによって、ユーザーがアップロードする動画のクオリティが上がったり、ユーザーの広告収入が増えるようになるような気はしないが、動画をアップロードするユーザーへ向けたサービス向上になることで、動画を投稿するユーザーのモチベーションが上がることはあるかもしれない。

おじさんの野菜はどんな味?

なんか、物哀しい物語を書いてみた。
---------

定年を過ぎたおじさんがいた。おじさんは、余った土地を耕して趣味で野菜を育てている。
商売じゃないから、無農薬でこだわりのある野菜を少量だけ育てている。こだわりの野菜は、通常より手間がかかるし、試行錯誤で悩みや苦労が多い。趣味でやっているからできることだ。スーパーのものと比べると形は悪いが味には自信があった。
おじさんの家族だけで食べきれない分は、畑の横に建つ小屋に「よかったら、もっていってください」と張り紙して置いておいた。帰る時に置いた次の日には全部なくなっているから、だれかが貰っていってくれているのだろう。

ある日おじさんは、どんな人が持っていくのか気になって、いつものように野菜を小屋に置いた後、帰るふりをして、離れたところから隠れて見ていた。
すると、小屋の様子を伺っている人がいることに気がついた。その人は、小屋の前を通り過ぎて様子をうかがった後、また戻ってきた。
気を使うから、おじさんがいなくなるのを待っていたのだろうと、おじさんは考えた。
その後、自転車に乗った主婦や、車に乗った男性もあらわれた。
おじさんは、思いのほか人気があるのが嬉しくて、そのまま気持ちよく帰宅した。

ある日、おじさんの作った野菜がおいしいと評判になっていることを家族から聞いた。
おじさんは、人のためになっていることを知って、それまで以上に、精を出すようになった。

いつものように畑仕事を終えたおじさんは、余った野菜を小屋に置いて帰った。
帰る途中、畑に忘れ物をしたことに気がついた。畑に忘れ物をとりに戻ると、小屋には野菜をもらいにきた人達が来ていた。
近づいてみると、その光景は、おじさんが思っていたものとは少しちがっていた。

野菜を取っては置き、取っては置き・・・、形や色等わずかな違いをより分けて、もらっていく野菜を吟味していた。傷があっても形が悪くても、ひとつひとつ子供のように育ててきた野菜だから、おじさんにとって、その光景はあまり気持ちのいいものではなかった。
普通の家庭で食べるにしてはあまりにも多すぎる数を持っていく人もいた。そんなに一人で持っていっては、他の人に行き渡らなくなると、おじさんは思った。
無料なのが助かると言っている人がいた。おじさんは、味に自信があるから他の人にも食べてもらいたかったのだが、他人の節約のために置いているだけのように感じた。

おじさんは他人のためになればという気持ちで、良かれと思ってやっていたつもりだった。
だが、おじさんの他人のことを考える人の良さとは正反対に、もらっていく人達は、自分のことばかりを考えているようだった。
おじさんは現実を知った。

翌日から、おじさんは野菜に値段をつけて販売することにした。
自分の作った野菜に価値を持つ人だけに食べて欲しかった。公平に分けて欲しかった。スーパーの野菜の代わりではなく、おいしい野菜として食べて欲しかった。
おじさんの野菜は本当においしかったから、それでも売れたが、翌日には売れ残りが出てしまった。

そのうち、有料になったことで、あちこちから不満の噂が聞こえてくるようになった。
もちろん、もともと無料なのがあり得ないこと、例え有料でも是非欲しいという人もいた。
だけど、不満を持つ人は意見を言いたいが、満足している人は何も言う必要がなかった。ブーイングの声の方が大きく目立った。

もう、おじさんは、野菜を作るのがおもしろくなくなった。
おじさんは、おいしい野菜ではなく、人の醜さをさらけ出す、ひどい味の野菜を作っているようにしか思えなくなってしまった。

※この物語はフィクションであり、登場する人物・団体等は架空のものです。

MySQLのDDLを復活させる

以前、MySQLのサーバーのハードディスクが吹っ飛んだ時、同じサーバーに保存していたDDLとテーブル仕様書が一緒に帰らぬ人となった。
DDLとは 全テーブルの CREATE TABLE が入ったテキストファイルのこと。
幸いデータベースの定期バックアップが保存されていたので、データベースを復元してDDLを復活させた。

テーブル一覧は
show tables;
で表示し、そこからひとつひとつのテーブルについて
show create table テーブル名;
で、DDLを生成。
あとは、出力されたDDLのフォーマットを自分向けに編集しなおす。

テーブル仕様書はExcelファイルなので、このDDLを元に書き起こすしかない。

MySQLのデータベースコピー方法

MySQLのデータベースをコマンドラインからコピーするには以下のようにする。
mysqldump コマンドの結果を mysql コマンドにパイプしている。
# mysqldump sourceDB | mysql destinationDB
sourceDB にコピー元データベース名、destinationDB にコピー先データベース名を指定する。

ユーザー名とパスワードを指定するには以下のように -u と -p オプションを使う。
# mysqldump -u USER -p PASSWORD sourceDB | mysql destinationDB

この方法によるコピーでは、コピー先に存在するテーブルは置き換えられるが、存在しないテーブルはそのまま残る。
mysqldumpの吐き出すSQLは以下のようにして見ることができるので、心配なら何が行われるのか内容を確認するとよい。
# mysqldump sourceDB > v.sql
# view v.sql
くれぐれも、コピー元とコピー先を逆にしないように注意。念には念を入れて /var/lib/mysql ディレクトリのコピーを作成する等、バックアップしてから実行すること。

2011年11月30日水曜日

一家に一台、専用の歯科衛生士が欲しい

最近、歯科医院に通っている。
そこでは歯科衛生士に歯のクリーニングをしてもらっている。
歯と歯の間を磨いたり、フロスをしたり、歯周ポケットを掃除してもらえる。
歯科衛生士という他人の目で直接、視認しながら、奥の方の歯や、歯ブラシの届きにくい死角まで、丁寧にやってくれる。
実感があるので、一回1000円以内で済むなら、喜んで毎月通いたいが、問題は時間だけだ。

家ではブラウンの電動歯ブラシを使っている。ヘッド部分が回転だけでなく叩きつける動きをすることで、歯垢を効果的に落とすらしい。ブラウンの電動歯ブラシはそのような機械的な仕組みなので、磨いた後、効果があるような気にさせられる。シェーバーも使っていたので、ブラウンというメーカーも信頼できる。
先日、新しいゴム製のワイパーのついた、ヘッドに取り替えてみた。
ヘッドが大きくなっていたので、細かい部分にブラシが届きにくくなるのではないかとも思えたが、ゴム製のワイパーが歯の隙間を磨くらしいので、カバーできるのではないかと考えた。ブラウンが言うのだから、きっとそうだ・・・

昔、ギザギザにカットされた歯ブラシのテレビCMをやっていたのを見たことがある(年がばれる…)。
もちろん、昔ながらの手で動かす歯ブラシだ。歯ブラシの毛先側に数ミリおきに山と谷がある。
山部分の毛先が歯と歯の間を磨くという狙いだ。
だが、歯というのはそんなに単純な形状ではない。前歯と奥歯では歯の大きさや厚みが違うし、歯並びも人それぞれ。ひと通りの波形形状がすべての人のすべての歯に一致するはずはない。少し考えれば、ギザギザカットの歯ブラシは十分機能しないことが分かる。

ギザギザカットで複数の歯を一度に磨こうなどという虫のいい話はなく、歯というのは一本一本丁寧に磨くべきだ。
そうすると、手で動かす歯ブラシの大半はヘッドが大きすぎる。
細かいところまで磨くための歯ブラシのブラシ部分の大きさは、大きすぎても、小さすぎても良くなく、微妙だ。

つまり、ブラウンの電動歯ブラシ用の新型ヘッドはやはり大きすぎた。大きくなったことで複雑な歯の隙間にブラシが入っていかない。
円形のヘッドは、外側より中心側の毛が短くなっている。カップ形状をしていて、歯に当てると包み込みように磨くというコンセプト。だがその時、外側の毛が、歯の隙間にまで入っていってはくれない。

歯科医院で歯科衛生士にクリーニングしてもらうと、ターゲットは歯の表面よりも、隙間ばかり。
それが正解だと思う。表面は汚れが落ちやすいが、隙間こそが問題だ。
ディスプレイ画面でいうと液晶表面よりも、液晶の隅っこの液晶とフレームの段差部分こそ、ほこりがたまりやすい。

最近は、歯科衛生士の勧めで、歯間ブラシを使っている。
歯間ブラシは短くて細い針金に細かい毛がついている小さなブラシだ。それを歯の隙間に挿入して、押したり引いたりして歯間を磨く。
使ったことがない人には、是非お勧めしたい。歯ブラシだけでは対処できていないことを実感できる。
実感できるというのは、出てくるということだ。歯を磨いた後なのに、歯間ブラシを入れると、間にあるものが出てくる。普通の歯ブラシでは足りないことを実感できる。
怖いように思うかもしれないが、慣れれば大丈夫。簡単で、効果が実感できるので、続けられるのではないかと思う。

歯科衛生士にお世話になりながら、こんなことを言うのは申し訳ないが、歯科衛生士が不要になるような歯のクリーナーが欲しい。ちゃんと歯の隙間や歯周ポケットを掃除してくれるような。
将来はそういうものも出てくるかもしれないし、ないということは技術的な困難もあるのだろうが、乗り越えられればビッグビジネスかも。

メール広告 ウェブサービス 望まれないものには効果がない

前記事で、so-netさんのメールが、配信停止操作をしても送られてくる件について書いたが、望まれないことをするということには考えさせられることがある。so-netさんに文句を言っているのはない。一般的なサービスとしての考えだ。
so-netさんは無償のサービスではないが、仮に無償だったとしたらどうだろうか?
無償でサービスを使うからには、ユーザーはあまり文句は言えない。サービスを使わなくなった後も、メールを送ってくるというのであれば問題だが、サービスを無償で利用する引き換えに、広告メールを受信しなければならないという決まりだとすれば、後はユーザーの選択次第だ。サービスは使いたいが、自分にとって不要なものは送るなという、いいとこ取りというわけにはいかないだろう。ただ、そうした場合であっても、サービス提供者に再考を促すことはできる。たまに気に入らないことがあるとすぐ癇癪を起こす人を見かけるが、現状が気に入らなくても、明日は分からない。サービス提供者の立場やこれから先のサービスのあり方を冷静に考え、よりよい方策をサービス提供者に提案することはできる。

ユーザーが望まないようなことをやり過ぎることは、ユーザーが離れるというようなマイナス面ではなく、何よりもプラスに働かないことがある。
その理由はユーザーが望んでいないからだ。必要のない人に必要のないものを押し付けても必要とされない。
必要としない人に広告メールを配信しても読まれないし、広告効果はない。
それならば、メールを読まないと仕方がないようにする方法はある。
メール本文のどこかにコードを埋め込んで、それを入力しないと本サービスを使えなくしたり、メールの文章を読んで意味を理解しないと分からないようなクイズを本サービス利用時に回答させる等の方法もひとつだろう。
ユーザーは渋々メールを読む。だが、それはメールの中から目的となる情報だけを目を皿のようにして探すだけだ。興味のないメールの内容や、広告には目もくれず、本サービスを利用するための答えとなる部分だけを、一生懸命見つけようとする。
ならば、さらに・・・と、イタチごっこを繰り返しても良いが、押せば押すほどユーザーは離れていく。
こうなってくると、メールを送る方も気持ちいいものではないはずだ。

広告メールを例にしたが、それ以外のサービスをする場合にも同様だ。
望まないサービスを押し付けるのは難しい。
だから、何もするな、メールを送るな、と言いたいのではない。
何事も効果的なやり方には工夫がいるということだ。

so-netのメールがしつこい件

「so-net モバイル 3G」というのを使うために、so-netというインターネットサービスプロバイダーに加入したのだが、やたら広告っぽいメールが送られてくる。
メールには配信停止するためのURLが記載されていて、そこにアクセスすると、いちおうは配信停止できるらしい。ご丁寧にその直後、配信停止しましたというメールまで送られてくる。
だが、それでもまだ送られてくる。もう何回も配信停止の手続きをしたはず。会員向けメールに種類がいろいろあるのか、止めても、止めても、送られてくる。

こうなってくると迷惑メールに近い。
@niftyにも加入しているが、そちらはそんなことないんだが。

私が毎月支払っているso-netの会費と「so-net モバイル 3G」の利用料では足りないのだろうか?メールでの広告配信による収益があって、それが計算に入っているからだろうか?

so-netさん。やり過ぎはイメージダウンかも・・・

2011年11月29日火曜日

PHPで金額等の数値に3桁毎のコンマを入れる

金額等の数値に3桁おきにコンマを入れるには
number_format()
を使う。
echo number_format(1234567);
とすれば
1,234,567
となる。
2つめ以降の引数に小数件以下の桁数や、小数点に使う文字、コンマ以外の区切り文字も指定できる。

ちなみに金額なら money_format() というのもあるが、この number_format() の方が簡単かも。

インターネット発の集団行動が気にかかる

大阪府と大阪市のダブル選挙が終わり、橋本徹さんの率いる大阪維新の会が圧勝する結果になった。
テレビのニュースを見ていると、無党派層と呼ばれる若い世代の支持を呼び起こしたことで投票率が上がったことも勝因のひとつとしてあげられていた。その際に、ツイッターやソーシャルネットワークの活用による呼びかけで、投票が広まったのではないかとの指摘があった。

近頃、こうしたインターネットによる社会への影響が見られることが多くなった。
特に、インターネット上の呼びかけで集団行動を引き起こすような現象だ。
先日も、都道府県が作ったマスコットキャラクターの人気投票があって、特定のキャラクターに投票が集中することが起こり、正常な人気投票を妨害するような事態になった。

世界的には、フラッシュモブという事前に申し合わせた人達が街中で通行人のような素振りで紛れこみ、突然、集団でダンスを始めたり、同じ行動をする等して、周囲を驚かす、ドッキリのようなイベントがある。
このような行動は、交通の迷惑になったりすることがあることから、非難の声もあるが、ほどほどなら、珍しいうちは、お遊びで済む。
しかし、不特定多数の集団行動であることから、店舗従業員の少人数では太刀打ちできないことをいいことに、集団万引きをするような事件も起きている。

アラブの春や中国国内での民主化運動等、インターネットを政治的な活動に活用できることは、ある方向性から見ると、有効と見ることができる。もちろん、政権から見ると、邪魔な存在だろう。

インターネットや、その中のソーシャルメディアは良いことに機能することもあるし、悪いことに機能することもある。
良いことはそれでいいのだが、最近は悪い面も目立ち始めているような気がする。

インターネットの呼びかけは、その場限りの無責任な「お祭り」だ。
若い人達は、深く物事を考えず感情で行動してしまうことがある。年をとっても感情で物を考えるが、若い人達よりは自立した考えがあったりして、他人の意見を真に受けない。悪いく言えば年をとると素直じゃないのだ。

インターネットを使って、責任の所在のない集団が、社会へ破壊的なインパクトを与える。
インターネットのユーザーひとりひとりの力を結集して、社会へ影響を与える。その結果がテレビでニュースとして取り上げられる。自分が若かったころのことを考えると、そういうのも面白いかもしれないと思うが、それなら想像が及んでいない。その裏で、悲しむ人や辛い思いをする人がいるかもしれないことを考えなければならない。

どうやって理解すれば「シミュレーション」が「シュミレーション」になるのか

この文章の入力に使っているGoogleのIMEで「シュミレーション」と入力すると「→シミュレーション <もしかして>」と表示される。
GoogleIMEの言うように、元の英単語が「simulation」で「simu~」で始まるから、「シュミ~」ではなく「シミュ~」の方がより適切だ。
もう少し英語っぽい発音では、「スィミュ~」の方が近いのかもしれないが、カタカナ表記に変換される方法としては「simu~」と来れば、「シミュ~」で自然だと思う。

この議論は、もう大昔から、言い尽くされている。
この話題はもう結構だ・・・だ・・・だ・・・だが、気になるのだ。
やはり、「シュミレーション」と書かれると気になる。

どのような発想から「シュミレーション」と書くのだろう?
なかには、本人も混乱しているのか「シュミュレーション」とか「シミレーション」と書く人もいる。
以前、あるコンピュータプログラム中に「syumirater」とう単語を見たことがある。これなんて読むの?シュミラーテー?
「simulator」のことだろうが、この一単語中だけでいったい何箇所勘違いしているのか。

ひょっとして「シュミレーション」と書く人は、どこかで「シミュレーション」という表記を見かけたときに、「うわ、ミスってる」と思っているのではないだろうか?どっちがミスっているのか。
いまだに、テレビでも「シュミレーション」の表記を見かけることがあるし、やはりまだ「シミュレーション」という言葉自体が定着しきっていないということかもしれない。

例え「シミュ」より「シュミ」の方が発音しやすくても、日本語の「趣味」を連想しようとも、元の単語が「simu」となっている以上、それを理解すれば、あらゆる言い訳は払拭される。

simulationの意味が分かりにくいことも原因の一端のような気がする。
simulationとは「擬態」等と訳されたりするが、それでも分かりにくい。
ようは、実際はしないけれど、試験的にやってみたり、本物の真似をするようなことだと理解している。
例えば、避難訓練とか、本物っぽく作られた航空機のコックピットとか。

「シミュレーション」が「シュミレーション」と書かれたところで、普通は困ることはないし、スルーするが、業務で商品名として扱ったりするようなシチュエーションでは、どうでも良い指摘だけにちょっと反応に苦慮する。
それだけに、間違って理解している人は、誰にも訂正されず、ずっと「シュミレーション」と言い続けるのかもしれない。

Excelの表は、完成されているか

Excelは表計算と呼ばれるソフトウェアであるが、何も計算しなくても、表形式で情報を管理したり、ワープロとして使われていたりすることがある。

最初にExcelを起動すると、縦横に罫線のひかれた真っ白な空の表が表示される。
ここで表示される罫線は、印刷では出力されない。
印刷でも出力されるようにするには実際の罫線を書く。

罫線や塗りつぶしを駆使して表作りに凝りだすと色々と装飾できる。
しかし、触れば触るほどメンテナンス性が落ちる。

外枠と中の線等を違う罫線で引いて、異なる罫線を混在させると、コピー&ペーストで罫線もいっしょに上書きされる。ペーストした後、罫線を引き直したりしなければならない等、手間がかかる。
一行ごとに行全体の色を変えてシマシマにすると、見た目に派手だが、行挿入に弱いのは容易に想像できる。
セルの結合をすると、あらゆる操作が複雑化することがある。

複数の人間で管理されるExcelファイルでは、人によって観察力や几帳面さが違うので、編集による表の乱れを細かいところまできっちり修正する人と、そのままにする人がいる。

これらを当たり前のことととるか、何か解決方法があると考えるか。
もう完成しているように見えるExcelでも、よく見ると、改良点はありそうだ。

私は今のままでも困らないが、それより他の人が表を作るときに、あんまり凝らないでほしい。
今、編集している誰かが作ったExcelファイルが面倒で、また、こんな記事を書いてしまった。

知能指数100が平均ということは?

知能指数を判定できるウェブサイトがある。私がやってみると120を超えるような、能力以上と思われる数値が出た。以前に似たようなものをやったことがあるのと、インターネットの知能指数テストの判定誤差によるものだろう。ただ、こんな私でも100前後程度の平均的な知能があるのではないかと勝手に思っている。

国による差や、知能指数という基準の捉え方もあるのだが、大雑把に頭の良さのようなものだとして、平均が100ということは100に満たない人が半数いるということである。
頭の良さというのは、生活において、かなり影響があると思う。
日々選択だ。道路を移動するにも、買い物をするにも、仕事でも、私生活でも、少なからず頭を使う。
ちょっと判断を誤ったからといって、すぐに命に関わったり、取り返しがつかなくなるようなことにはならないが、判断の積み重ねや、致命的な局面では、重要なこともあるだろう。
職業や性格形成にも影響しそうだ。
頭が悪いことで社会的に摩擦ができ、チンピラのようになってしまったり、反対に引っ込み思案になりすぎたりということがあるのかもしれない。
本人はそう思っていないだろうが、世の中、頭があまりよくないことで、不利な生活をおくっている人が結構いそうな気がしてきた。
おっと、ひょっとしてこれは私のことかも、どおりで世の中うまくいかないわけだ。

しかし、頭が良すぎることも不幸だろうと思う。
例えば、水の入ったコップを手に持ってひっくり返せば、水がこぼれて床を濡らす。分かりきったことだ。もしも、そのように明らかに分かりきったことをわざとする人がいたら、私はイライラするかもしれない。
つまり、考えられる人には当たり前のことが、考えられない人には当たり前でないということが起こる。
頭の良すぎる人は、日常的にその状態だ。頭の良い人にとって当たり前のことでも、周囲のほとんどの人はそんなに頭が良くないから、同じように予測できない。
頭の良すぎる人は、周囲の行動に「なに、分かりきったことを失敗してんだ」と、じれったく感じるばかりだ。

私はスーパーやコンビニで買い物をする時、レジで、買った物の金額を暗算している。正確にはしないが、だいたいの総額を計算する。
そして代金の支払い時に予想通りだったか確認できる。大きく違っていたら、レシートをチェックする。その時はたいてい私の勘違いで、後から気付かされて納得するだけだが。
日頃から頭を使うことを億劫がらず、先を見通すようにしておきたいとの思いから、そんなことをしている。

頭が良くなっても、そんなにバラ色の世界でもないのだが。

シェアウェアはどのくらい儲かるのか?

無料で使えるソフトウェアをフリーソフトウェア、有料のソフトウェアをシェアウェアと表現することにする。

シェアウェアを作ったとして、どのくらい儲かるものだろうか?
先に結論を言うと、まったく儲からない。
簡単なソフトウェアであれば、一本も売れないだろう。
そこそこよくできたものでも10本売れれば御の字。100本も売れたらヒット作だ。

シェアウェアは、インターネットを通して販売することが多いだろう。Vectorで公開するか、独自ホームページを設けてPayPal、銀行振込等で支払いを受けるようなやり方がある。

Vectorを例にすると、ユーザーははなっから支払いをするつもりがないのが大半だ。目的のカテゴリーのソフトウェア一覧ページを表示したら、フリーソフトウェアのアイコンのついたソフトウェア以外は、目もくれない。
Vectorを訪ずれる人のほとんんどは一切何も供するつもりなどなく、一方的にもらいに来るだけだ。その意識すらない。インターネット上にあるソフトウェアに対価を支払うという概念がない。
ソフトウェアを作る労力を知らないし、知ろうともしないし、知りたくもない。知ったとしても、知ったことではない。

自前のホームページに公開したソフトウェアなんかだったら、存在を知られることすら難しい。

あなたはメールチェッカーを使われているだろうか?仮に、それが100円のシェアウェアになったとする。
メールチェッカーなんて、どこにでも転がっているので、無料のものを探しても良いが、それまで使わせてもらっていたこと、これから先も使わせてもらうこと、他のソフトウェアに変えた時のインストールと再設定、使い方を覚える手間を考えれば、私なら缶コーヒー1本にも満たない金額なんか、とっとと払ってしまう。
だが、多数の人はそうではない。1円でも値段がつくと、多くの人は使わないだろう。手間や使い勝手を考えれば、どう考えても払ったほうが得だとしても、インターネットの世界では、誰も払わないのだ。
どんなに素晴らしいソフトウェアを作ったとしても、値段をつけると損得の勘定では売れない。
そればかりか、インターネットの世界で有料化すると「悪」とレッテルされ、感情的な反発をかうことすらある。
人が労して作ったものをただでもらえないから「悪」というのは、まったく道理にかなっていないが、インターネットの世界は無料が当然のごとくなっていて、そういう勘違いを起こしてしまう。それが正しいとは思わないがそういう発想を持つ人がいる。

ちょっと前に野田総理大臣という人が少々好感度が高かった。政策が良いからではない。前の総理より低姿勢だからだ。
傲慢ではなく、国民に対して、しおらい態度を見せているからだ。
野田総理大臣の良し悪しは置いておいて、こうした表面的なことでものを見る「人の愚かさ」のようなものを感じるが、現実はそういうことだ。
ソフトウェアも同じで実性能ではなく、他のことが重要だったりする。

こうしたことは、私の経験から考えさせられてきたことだが、そうした中からシェアウェアを売るためのコツというか、法則や、方法も見えてきた。
しかし、それをここでは書かない。いいアイディアがあれば黙っていて、他人に教えるということはしないからだ。

そう、このような書き方をすると、「ちぇッ、なんだ言わねえのか」となる。
私もあなたも、他人に理由もなく、一方的に与えなければならない理屈はないのだが、インターネットでは情報でもソフトウェアでももらえることが当たり前だと思ってしまうのだ。私の言い方もよくない。こうした上から目線のような物言いは反感をかう。
私が思いつくシェアウェアを売るつまらないアイディアのようなものは書いてもいいんだろうが、今回は主眼からそれるのでパスさせていただきたい。

こうした文章をひとつ書くにも何十分もかかる。こんなものでも、そこそこ面倒な作業だ。
時間と頭を使って、得られるものはほとんどない。
シェアウェアも同じようなことが想像できるのではないだろうか?

SQL Server2000でDTSのインポートのテーブル指定が面倒くさい

SQL Server2000 の SQL Server Enterprise Manager。DTSによるインポートという機能があり、別のデータベースからテーブルやビューをコピーすることができる。データベースのまるごとコピーなら、バックアップと復元を使う方法もあるが、ネットワーク経由だとバックアップファイルのコピーが必要になるためセキュリティ上許されないことがある。そこでポート1433を開放して、ネットワークごしにコピーするためのひとつの選択肢となる。

この機能、SQL Server2000で行おうとするとかなり使いにくい。
「データ変換サービス インポート/エクスポート ウィザード」を使い、「変換元データベースからテーブルとビューをコピー」というので行うと、テーブルとビューを選択するダイアログが表示される。
このダイアログが強烈に使いにくい。テーブル数が数百、数千とあるような大規模なシステムになると地獄を味わう。
テーブルとビューが一覧表示されるリストに、5行と半分ぐらいしかテーブルが表示されない。ダイアログのサイズは固定されていて、大きさを変えることもできない。ちょっとずつスクロールしながら1行ずつ設定していかなければならない。
「すべて選択」「すべて選択解除」というボタンがある。これをクリックするとすべての行のチェックボックスが変化する。あくまですべての行を一気に変えるものなので、部分的に変更したい場合は、ひとつひとつクリックしていく。ShiftキーやCtrlキーによる複数行選択も効かない。本当に一行、一行、設定していかなければならない。マウス操作ではチェックボックスの細かいクリックが辛いのでキーボードで行おうとすると、チェックのオン/オフはスペースキーでできるものの、次の行に移動しようと下矢印キーを押すと、2列目のセルがコンボボックスになっているので、コンボボックスの中身がスクロールしてしまう。
唯一の方法は、はじめにすべて選択にした後、チェックを解除したい行をクリックしてアクティブにし、スペースキーでその行のチェックを解除する、解除することにより2列目のコンボボックスが消える。それで下矢印キーで行移動が効くようになるので、次の行に移動できる。以降はスペースキーと下矢印キーを交互に連打する。選択しなければならない行よりも、選択しない行の方が多くても、マウスクリックでチェックするよりはキーボード連打の方が、幾分、速くて楽だ。
スペースキーと下矢印キー、2つのキーをがんばって連打しつづけて複数行の選択状態を変えることはできても数百行ともなると、かなり辛い。いや、辛かった。

各テーブルやビューには所有者がある。作成先はデフォルトで「dbo」になる。これまた一行ずつ、書き換えていかなければならない。
あらかじめクリップボードに所有者名をコピーしておいて、作成先のセルをクリックし、所有者名の位置までカーソル移動して、Ctrl+Vで貼り付け。次の行をクリックしては、カーソル移動して貼り付け。これを何百行と行わなければならない。いや、行った。

セルを編集状態から抜けようとしたり、なにかの拍子に、間違ってESCキーを押したりすれば、瞬時にダイアログが閉じて、行った編集が全部パーになる。いや、なった。
なったら、またひとつひとつやりなおしだ。涙が出る。

何時間もかけて、「次へ」ボタンを押す段階まで到達できたなら、次の画面でDTSパッケージとして保存しておくことができる。保存しなかったら、せっかく設定した内容は一回限りで終わるので注意したい。
保存したパッケージは、後から編集しなおすことができない。一度作ったら最後、先ほどの画面のテーブルとビューの選択を編集しなおすことはできない。一箇所でも間違っていれば、はじめからやりなおしとなる。

作ったDTSパッケージをちゃんと作って保存できたなら、「データ変換サービス」に登録されているので、そこから実行できる。実行にはかなり時間がかかる。

それで、苦労して作ったDTSパッケージを実行してみると、エラーの嵐・・・
もうエラーの内容を検証する気にもならず、あきらめて他の代替案で行った。代替案があったからいいけど。

これに限らず、SQL Server Enterprise Managerは、何をやっても反応が遅いし、どうにも使いにくい。

2011年11月28日月曜日

大量のファイルを複数のディレクトリに分散して格納する方法

最近はハードディスクもテラバイトクラスの容量なので、大量のファイルを作ることができる。

以前、linux上でPHPを使いウェブサイトのプログラムを書いた。
それは、使っているとファイルがどんどん増えてくるシステムだ。
linuxの場合、ひとつのディレクトリに作れるファイルは最大3万とか、そういう値だったと思う。
いずれにしてもひとつのディレクトリに何万もファイルがあれば、いい加減多すぎるし、何かの時に問題が起こりかねない。
そこで、増えてくるファイルを複数のディレクトリに分散する形をとることを思いつく。

最初はディレクトリ「00001」にファイルを入れていく。1万個まで達したら、次は「00002」というディレクトリを作ってそちらに入れる。というような手法だ。
これでは、ディレクトリにいくつファイルが入っているか、どこまでディレクトリを作ったか等の管理が必要になる。例えばそのカウンターをデータベースに記録しておくといったようにだ。その場合、ウェブシステムなら連番管理の排他制御も考えなければならないかもしれない。

少し面倒なので別の方法を考えた
まず年でディレクトリを作り、その下に月日でディレクトリを作る。実際のファイルはその月日ディレクトリの下に入れる。一日に数千個程度までのファイル数であれば、これで対処できる。まだ無理なら時刻でサブディレクトリを作っても良い。
ファイル名は時刻やuniqid()を使う。

しかしながら、このことは今のシステムを作ってから思いついた。
よく考えず、別の方法で作ってしまったのだ。
たぶん大丈夫だと思うが、自分の納得のいかない状態になっているのが、ちょっと気分が悪い。

無駄な会議にはノートパソコンがあると便利

仕事によっては無駄な会議に出なければならないことがある。
今日の私の定例の会議もまた、部署の長となる立場の人間が奥の席に座り、それを取り囲むように数十人が席に座るという、よくある日本の会議の風景となった。
数ページにわたる細かく書かれたドキュメントが配られて、関係あるのかないのか分からないようなことを、ひとつひとつ進めていく。

何枚にもなるような資料なんか、どうせ参加者の頭に入るわけがない。
資料を作るとしたら1枚がちょうど良い。要点を3項目程度にまとめ。それに箇条書きででも説明をつければ程良い形になる。
細かい数字もいらない。「売上は、1,400,000千円の目標に対して、実績は1,103,897千円。296,103千円不足している。」等とするより、「売上は、14億円の目標に対して、実績は約11億円。3億ほど足りない。」とでもした方がピンとくる。

会議に出席する側の気持ちになって考えてみよう。
何枚もの資料を目の前に出された時など、ため息が出るだけだ。
退屈な会議など眠たいだけで、何も残らず、全員にとって無駄な時間にしかならない。
翌日、内容を聞いてもほとんど覚えてなんかいない。

しかし、人の愚かなのは、人のふり見て・・・ということもあるので、まあ参考にすればよい。
そういうくだらない建て前や、セレモニーの中に付き合わされるときなどは、ノートパソコンがあると便利だ。
パソコンを使っていても会議に耳は傾けておけるので、あまり問題はない。
キーボードのタイプ音に注意はいるが、効率的な時間を過ごせるし、暇つぶしにもなる。

2011年11月25日金曜日

PHPでFTPアップロードする

PHPをcronで実行して、ロリポップのサーバーにFTPでファイルをアップロードする必要があって、その時に行ったPHPによるFTP処理の技術資料。

$connId = ftp_connect("ftp.aaa.com"); // 接続
ftp_login($connId, "user", "password"); // ユーザー名とパスワードでログイン
ftp_pasv($connId, true); // パッシブモードにする
ftp_chdir($connId, "upload"); // アップロード先のディレクトリに移動
ftp_put($connId, "filename", "/usr/local/filename", FTP_BINARY); // アップロード開始
ftp_close($connId); // FTP終了
こんな感じで一連の処理が行えます。
テキストファイルの場合は、ftp_putの第4引数に FTP_ASCII を指定します。
サーバーに既にファイルがあった場合は上書きされます。
ちなみにダウンロードは ftp_get です。

フリーソフトウェア、シェアウェアの公開方法

フリーソフトウェアやシェアウェアを作ったは良いが、次にどうやって公開するかが問題になる。
現在、これが簡単にできない世の中になっている。

順当なのは、Vectorに登録することだ。
Vectorは、そこそこ有名なサイトなので、作ったソフトウェアの宣伝になるし、ダウンロードする側に安心感を与えられる。
公開するのがシェアウェアなら、送金の代行もやってくれる。

ただ、Vectorはいざ使おうとすると不便な面もある。
ひとつは、登録時のチェックに日数がかかること。昔、ウィルス混入騒ぎがあったため、今はウィルス等のチェックが厳重に行われているからだと思うが、これに数日かかる。新規登録したときだけでなく、バージョンアップで差し替えるたびにチェックが行われる。
例えば、付属ドキュメントの記載に不正確な点があって、その部分をわずかに修正してアップロードしなおしただけでも、そのたびごとに公開まで待たされる。
また、紹介文の文字数や、紹介画像数に制限があるので、複雑なソフトウェアでは十分な紹介ができないかもしれない。
シェアウェアでは、シェアレジに登録することで代金支払いを仲介してくれるのだが、そのために郵送で書類のやり取りが必要なので手軽にすぐ始めるとはいかない。ソフトウェアの登録とは異なるシェアレジ用のアカウントが発行され、アカウント管理が二重になるのも少々煩雑に感じてしまう。
そして、シェアレジの手数料は結構重い。作者と購入者、両方に手数料がかかる。商品代金1,000円だとしても購入者は手数料と消費税で1,155円を支払い、作者側も別途手数料が引かれて、受け取るのは892円になる。
実質、購入者は作者が受け取る金額に30%上乗せした金額を支払うことになる。

Vectorを使うことで、自分でウェブサイトを用意する必要がなく、ほとんどほったらかしで公開できる。
Vectorの欠点は欠点として、利点を活かして、有効に利用させていただくのが一番賢い。

次に自分でウェブサイトを作る方法がある。
無料のホームページサービスの中には容量1GBとかと謳っているところもあって、問題なく使えそうに見えるが、実際は1ファイルのサイズやアップロードできるファイルの種類、HTMLファイルとデータファイルの比率、転送量等に制限がある。
実際のところ無料ホームページスペースでソフトウェアのダウンロード環境を作るのは難しい。
ダウンロードはVectorへリンクする方法で、無料ホームページではソフトウェアの紹介を詳細にするという活用はできる。
また、シェアウェアならPayPalや銀行振込等、別の支払い方法を紹介したり用意しておくためにも使えそうだ。

シェアウェアで、そこそこ売れるのなら有料のホームページスペースを使っても良いが、シェアウェアはほとんど売れるものではないし、フリーソフトウェアだったら収益は0。広告を掲載しても良いが、ある程度アクセスを集められるものでなければ、ホームページスペースの費用をまかなえないかもしれない。寄付というのも成立しないのは目に見えている。

ソフトウェアを作っても公開するのすら難しい。

Googleのサービスが無料なのは本当に良いことなのか

ずいぶん前に読んで、興味深かったブログ記事「Googleがネットを無料化する目的
Googleが無料でサービスやアプリケーションソフトウェアを提供するのは、広告スペースを広げるためであるという見方だ。
特に「ユーザは目先の利益しか考えないので…」という表現は、私も同じように考えそうなので、おもしろく感じた。そして、この記事に興味を持った本質的なところだと思う。

私は、このところGoogleには、以前のマイクロソフトのように独占による問題が頭をよぎる。
というのは、最近Googleのサービスを色々(Gmail、Analytics等)使っているとIEではレイアウトが崩れたりして、きれいに表示されないことが多いのだ。
Chromeを使え、ということなのだろうが、Chromeでは文字化けして、まだうまく表示されないウェブサイトがあったりするのと、シェアという意味ではまだまだIEが多いので、自分のウェブサイトを日常的に確認できるためにデフォルトブラウザをIEにしておきたいという事情がある。
Googleのサービスは優秀で、なにより無料で使える。だから使ってしまう。そしてウェブブラウザもChromeに変えざるを得なくなってくる。Googleの思う壺だ。

本来、ウェブサイトのコンテンツもアプリケーションソフトウェアも、制作するのに手間や費用がかかるはずである。にも係わらずインターネットでは無料が当たり前のようになっている。
コストを回収するには一見無料に見える広告でしか成立しない世界になってしまっている。しかし、広告は収益の効率があまりよくない。
有料にすれば、見向きもされないし、無料でやるには、儲からない広告でやるしかない。
コンテンツ提供者とユーザーの間に立つGoogleが中間搾取することで、コンテンツ提供者とユーザーは余計な費用を支払う構造になっている。
Googleの収益は、自然に湧いたものではない。どこかから生まれたものだ。それは突き詰めればユーザーからだ。

誰でも無料の方がありがたい。
だが「ただほど高いものはない」
よく裏を考えておかないと、実は大損をすることもある。

しかし、Googleが悪者と決め付けるつもりはない。広告代理店も価値あるサービスのひとつだ。
むしろ私はいつもGoogleのお世話になっている。このブログもGoogleのbloggerを使っているし。

元記事「Googleがネットを無料化する目的」に興味を引かれた本質や、こうした文章を書いているのは、何が正しいか間違っているかを言いたいのではない。これを考えることで何かを変えるつもりもない。本能や目先の利益だけではなく、元記事の筆者のように広い視野を持っておきたいということである。

lsのディレクトリ名が暗い青色で読めない

linuxのコマンドラインでlsコマンドを打つと、ディレクトリ名等の文字が色分けされて表示されるが、ディレクトリ名が暗い青色で表示されて、よく見えない。
顔を近づけて見るとなんとか読めるが、不便なので色を変更したい。

/etc/DIR_COLORS をホームディレクトリにコピーする。
# cd
# cp /etc/DIR_COLORS .dir_colors

次にコピーしたファイルを編集する。
# vi .dir_colors

以下の行を編集する。
DIR 01:34 # directory

例えば下のように 34→44に変更する。44は青色の反転表示。
色の種類はすぐ上のコメントに英語で書かれている。
DIR 01:44 # directory

変更を反映するために、evalコマンド実行。
# eval `dircolors .dir_colors -b`

このように読みやすくなった。

.dir_colorsファイルの設定しだいで、他にもファイルの種類や、zip、jpg等の拡張子で色分けできたり、太字、ブリンク等の修飾も可能。

2011年11月24日木曜日

MySQL Connector 64bitでMS-AccessからMySQLにテーブルリンクを作成できない

Linux上に構成したMySQLをMS-Accessから見られると便利だ。
MySQL Connector/ODBC でそれができる。
ODBC経由で接続して、MS-Accessからテーブルを表示したり、編集したりできる。

Windows 7の64bit版を使っているので、MySQLのサイトから
「Windows (x86, 64-bit), MSI Installer」
という64bit版のプログラムをダウンロードした。バージョンは5.1.9だ。
しかし、MS-Access上でテーブルへのリンクが作成できなかった。

どうやってもできなくて
「Windows (x86, 32-bit), MSI Installer」
という32bit版に入れ替えると、使うことができた。

それで使えているから別にいいのだが、Windows 7の64bit版なので、MySQL Connectorも64bit版が正しいような気が…なぜ?

ユーザー登録システムの捨てアド対策

ウェブサイト等のユーザー登録システムを作成していて、ユーザー登録フォームにメールアドレスの入力欄を設けている場合がある。
メールアドレスのフォーマットをチェックしたり、ドメインの存在チェックをして、正しいメールアドレスが入力されているか確認したりするのはよく行われる。

それ以外に短時間で消滅するメールアドレスが存在することも知っておいたほうが良い。
インターネットサービスの中には、10分程度の時間だけ一時的に存在して、しばらくすると消滅するメールアドレスを発行しているところがある。いわゆる「捨てアド」である。
そのようなメールアドレスでユーザー登録された場合は、ウェブサイトはユーザーと連絡不能になる。
ウェブサイトが何かのダウンロードサービスをしているような場合には、目的の物をダウンロードするために、そうした一時的なメールアドレスが使われることがあるようだ。
ウェブサイトに正しいメールアドレスを入力させるのが、スパムメール等、ユーザーが望まないものを送りつける目的であれば論外であるが、正当なウェブサイトなら、連絡不能になる不都合が起こることも考えておかなければならない。

一時的なメールアドレスが入力されたかをチェックするには、そうしたメールサービスが発行するメールアドレスのドメイン名部分をチェックする方法がある。
そして、ユーザー登録フォームに不正なメールアドレスが入力された場合はエラーを表示し、ユーザー登録できないようにする。

そのようなメールアドレスを入力する者がウェブサイトを利用する意思がないユーザーであるとみなすとすれば、不正なメールアドレスであることが分かった上でユーザー登録を許し、目的とする行為(消極的な投稿や目標とするものの取得)が行えないようにするのも方法だろう。

また、入力されたメールアドレス宛に確認のメールを送信し、メールに記載されたアドレスにアクセスさせることでユーザー登録を完了させるシステムとしている場合には、確認メール送信までの時間を長くするのも対策になる。

運用時には、新しいユーザーが登録されたら、常にドメイン名部分をチェックするようにしておきたい。日本国内でよく使われるドメインはISPや企業名、gmail、Yahoo等が多い。
実はそれほど種類は多くないし、一時的なメールアドレスのドメインはあまり見かけない名前のことの方が多いので、あやしいドメイン名というのはすぐに気がつく。あやしいドメイン名でユーザー登録された場合には、該当のウェブサイトをチェックして、一時的なメールサービスであることを確認し、ウェブサイトの不正メールアドレスリストに追加しておく運用とすることで、新たなドメインの登場に対抗する。

一時的なメールアドレス以外にも、無料で作成可能なフリーメールでも同様の心配がある。これはgmail、Yahoo、hotmail等、多くの種類がある。この辺りは仕方ないとするか、厳格に取り締まるかはサイトの運用方針次第だろう。

このような対策を考えることになるのは、メールアドレスを転売する業者や、広告メールを配信する業者が存在していることで、ユーザーがメールアドレスの登録をためらうためだ。
その結果、真っ当なウェブサイトまでもが怪しまれることになる。
しかし、ユーザーに悪質なケースも見られる。表に出てくることは少ないが、ウェブサイトを運営していると、遭遇するユーザーモラルは様々だ。
ウェブサイトは自分の身を守るために、ユーザーを甘く見て油断するようなことはできないのが現実だ。

PHPのPDOでデータベース接続をプールする方法

PHPのPDOでデータベースを扱う場合に、データベースの接続をプールして使い回してくれる方法がある。
スクリプト実行のたびに再接続しているとオーバーヘッドが生じるからだ。

例えば以下のようにしてPDOのインスタンスを作成すると良い。
----------
$pdo = new PDO('mysql:dbname=test;host=localhost', 'user', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", PDO::ATTR_PERSISTENT => true));
----------
「PDO::ATTR_PERSISTENT => true」の部分がそれ。
後はPHPにおまかせで良い。
こういうものが用意されているがPHPの便利なところだ。

接続プールとは関係ないが、この例ではMySQLで文字コードにutf8を指定している。MySQLでutf8を使っている方はこのようにして文字コードも指定すると良い。

ユーザー登録システムにおけるパスワードの強度チェック

ウェブサイト等でユーザー登録が必要なシステムを作成する場合に、注意する点がいくつかあるが、そうした中のひとつとして、ユーザーが設定するパスワードにも気をつけておきたい。
ユーザーが安全性の低いパスワードを設定した場合には、「あらし」や「なりすまし」が発生する危険性がある。
そのような場合には、ウェブサイトのセキュリティ管理にまで追求が及ぶこともあり、ユーザー、ウェブサイトともに被害を被る。
新規ユーザー登録時や、パスワード変更時に、パスワードの強度をチェックするようにしておき、強度が低すぎるパスワードは受け付けないようにしておく方が安全だ。

チェックする項目としては以下のようなことが考えられる。
・数字のみのパスワードは受け付けない。
 12345678
 111222333

・キーボード配列に沿ったパスワードは受け付けない。
 1qaz2wsx ・・・ 1キーと2キーから下に押していったパターン
 qazwsx ・・・ qキーとwキーから下に押していったパターン
 qwertyuiop ・・・ qキーから右に押していったパターン
 741852963 ・・・ テンキーを下方向に押していったパターン

・特定の文字列を含むパスワードは受け付けない。
 password
 pass
 hoge
 hogehoge
 hogefuga
 サイト名等

・繰り返しパターンのパスワードは受け付けない。
 abcdabcd
 abcabcabc
 abcddcba

・ユーザーIDを含むパスワードは受け付けない。
・含まれる文字の種類数が少ないパスワードは受け付けない。

キーボード配列等の文字列パターンは以下のPHPプログラムのように、正順、逆順どちらでも受け付けないようにしておくと良い。
----------
$pattern = "1234567890".
    "abcdefghijklmnopqrstuvwxyz".
    "qwertyuiopasdfghjklzxcvbnm".
    "qazwsxedcrfvtgbyhnujmikolp".
    "1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9ol0p".
    "zaqxswcdevfrbgtnhymjukilop".
    "zaq1xsw2cde3vfr4bgt5nhy6mju7ki8lo9p0".
    "741852963963852741";
if(stristr($pattern, $password) != false)
    return false;
if(stristr(strrev($pattern), $password) != false)
    return false;
return true;
----------

PHPでメール送信する方法

PHPのプログラムからメール送信するにはmail()を使うことで簡単に行える。

サンプルプログラムは下の通り。
通常、このプログラムで変更が必要なのは最初の4行の$toMailAddress、$subject、$mes、$headerに入れる内容だけで良いと思う。

-----------
$toMailAddress = "test@test.com";
$subject = "メールタイトル";
$mes = "こんにちは\n本文";
$header = "From: test@test.com\r\n";

mb_language("ja");
mb_internal_encoding("ISO-2022-JP");
$subject = mb_convert_encoding($subject, "ISO-2022-JP", "UTF-8");
$subject = mb_encode_mimeheader($subject,"ISO-2022-JP");
$mes = mb_convert_kana($mes, "KV", "UTF-8"); // 「半角カタカナ」を「全角カタカナ」に変換
$mes = mb_convert_encoding($mes, "ISO-2022-JP", "UTF-8");
if(!mail($toMailAddress, $subject, $mes, $header))
    error_log("メール送信エラー");
-----------

環境の文字コードはUTF-8、CentOS 5.7 + PHP 5.3.8を使っている。

複数システムの結合は絶対に一回でうまくいかない

古いシステム開発の手法では単体テスト、結合テスト、総合テスト等と呼ばれるテスト行程の種類がある。
結合テストはどのレベルの結合をいうのかということはあるが、プログラムのある部分同士を連動させて動作させた場合のテストである。

結合テストだけの話ではないのだが、異なる環境で作成されたプログラムを結合させた場合、確実に動作しないと思って間違いない。
結合部分が、関数呼び出しか、ファイルか、ネットワークか等に係わらず、双方のインタフェース仕様をどんなに厳格に定義したとしても、2つのプログラムを別々に作り、はじめて結合すると、絶対に動かない。

これは理屈ではなく、少し宗教じみた話である。マーフィーの法則のようなものだ。
簡単なインタフェースで自信満々でも、絶対に一発では動かない。
うまくいくことを信じてことを進めると確実に残業するはめになる。
うまくいかないことを前提に考えておいてよいし、心配しなくてもそのようになる。

キーボードのタイピング音がうるさい人は注意

もうずいぶん昔だが、UNIXサ-バーのとてもタイプ感の良いキーボードで仕事をしたことがあった。
そのキーボードを叩きながら、タッチタイピングで軽快に入力している自分の姿を想像して、きまっていると悦に入っていたかもしれない。
今思うと恥ずかしい。

今の時代、キーボードのタッチタイピングはすっかり見慣れた光景だ。IT関連の技術者だけでなく一般の人も普通に行なっている。識字や算数の感覚に近く、できることが当たり前で、もう意識すらしない。
いまさらキーボードのタッチタイピングがどうこうという話をしても懐かしく感じる。

最近、会社のオフィスで仕事をしていると、周囲のキーボードの音が気になることが多い。
私が神経質すぎるのが一番の原因だが、そうはいっても集中力を欠いてしまい一時的に頭の回転を止めさせられることがある。

大きな音のするキーボードを使っている人は周囲に迷惑をかけていることがある。
キーボードのタイピングが速いというのは、周囲から羨望の目でなく、顰蹙の目で見られているだけだ。

プラスティッキーなカチャカチャ音のするキーボード。エンターキーやスペースキ-等が、パンッ、カンッ、と、鋭い音のするキーボードは要注意。
特に高速にタイピングできる人こそ気をつけたい。

ブログやホームページのアクセスアップ方法を考える

ホームページやブログを作成しているような人は、自分のサイトに多くの人が訪れて欲しいと考えることがある。
純粋に自分の発信する情報を見てもらいたいと願ったり、アフィリエイト等で広告収益を得たいと考える人。
アクセスアップのためにランキングサイトに登録してみたり、SEOで検索エンジンから人を集めたいと考えたりする。

アクセスアップを願うことや、その活動をしてみることは良いと思う。その結果、残念ながらあまり結果は得られないだろう。
客観的に考えてみると良い。世の中、大量のウェブサイトがある。そう簡単にいくわけがない。

そういう私も色々考えたりするが、今思うことは、もうアクセスアップはあまり考えないようにしてはどうかと。
要するに、あきらめてしまうのだ。
アクセスなんかなくたっていいじゃないか。
自分が成長し、少数の訪問者か、あるいは自分ひとりが楽しめたらそれでよし。
自分色のサイトを作ろう、と。

アクセスアップばかり考えているサイトというのは、どうしても下心が見えてしまう。サイト訪問者というのはそうしたことを敏感に感じ取る。訪問者に余計なことを感じてもらってもイメージダウンになるだけだ。
ホームページにせよ、ブログにせよ、その作成にかかる労力に対して見返りは小さく、割に合わないのが普通だ。
結局、人の欲というのは尽きることがないので、どこまでいっても満足することなどない。

ブログだったら、100%自分のポリシーで満たされた世界一理想的なサイト。
ホームページだったら、細かなレイアウトまで思いのまま。部屋の中の家具の配置を考えるような楽しさがある。
アクセス数よりも、自分の頭の中に思い描くものを形にしていく。それを思うだけでエキサイティングだ。

2011年11月23日水曜日

海外ドラマのストリーミングサービスHuluはお得?

いろんなページを見ていると最近よく見かけるHuluっていう動画サイトの広告。「ふーるー」と読むらしい。
海外のテレビ番組や、ちょっと古めの洋画をインターネット経由のストリーミングで見ることができるサービス。
最初のひと月は無料でお試しできて、それ以降は月額1,480円。
パソコン以外にもiPadとかiPhone、Android端末等で見ることができるらしい。

画質はあまりいいとはいえないが、テレビ番組を見るのであれば、まあなんとか大丈夫。
字幕が時々変になっていることがあるけれど、脳内補完でなきないレベルではない。
オンデマンドなので、自宅に居ながらにして、見たいと思ったその瞬間に鑑賞できるメリットは大きい。

迷うのが月額約1,500円というところ。
レンタルビデオと一緒にして考えるのは違うのかもしれないが、やはり比較対象になってしまう。
私がたまに行くTSUTAYAというところでは、DVDが当日返却で300円。旧作だともう少し安かったかもしれない。
毎月コンスタントに5本以上レンタルビデオを借りるほど見るのならHuluもお得感があるのだが、私の場合は微妙なところ。
しかし本来は比較するのではなく、自分にとってその金額の価値があるかで判断するべきなのだろう。

で、実ははまってしまっている。
プリズンブレイクという海外ドラマを見てしまった。
このドラマの存在は知っていたし、昔に見ていた知人もいたのだが、特に何かしてまで見ようとは思わなかった。
今回、Huluはお試しで簡単に見れてしまう。
プリズンブレイクは全部で78話あって、半分ぐらいまで見たころは、こういうのが見れるのなら1,500円払うのなんか全然OKとか思っていたが、シーズン3あたりから飽きはじめてきた。
良いサービスに相応の費用を支払うのは当然だと思うし、まあ、他にも色々見られるようなので、Huluが自分に合うサービスなのか何ヶ月か様子を見てみようと思う。

金蔵寺で気分転換

少し遅れているようですが、京都の紅葉もピークを迎えつつあるようです。
ラジオのアルファステーションを聞いていると、渡月橋は通行規制になっているようで、嵐山方面はけっこうな人出なのでしょう。
息抜きに京都市西京区の金蔵寺というところに行ってきました。
京都でも、こうした穴場で静かに季節を感じる方が私には合っています。

金蔵寺入口
200円を寄付して入ります。

階段を上りきると、さっそくの紅葉

階段のもみじ
いい感じです。

もう少し階段を上がると、本堂に着きました。

線香一本10円。
太い線香です。
手が線香臭くなりました。
本堂の中からなにやらお経のようなものが聞こえてきます。

本堂の前も赤く色づいています。

本堂横にある開山堂。
ひっそりとした佇まいが、癒されます。

少し歩いて見晴らし台にきました。

京都市の南寄りが見えているようです。
京都タワーも見えました。

真っ赤なもみじと本堂
周囲をぐるっと回って散策しました。
30分ぐらいかけて、静かにじっくり楽しめました。

金蔵寺の近くには滝もあります。

休日のひととき、日ごろのストレスもありますから、よい気分転換になりました。

世の中にはまだ他人を思いやる人も残っている

ここのところ、というか、今年はずっと嫌な気分の一年だった。
そんな日々の中、先日めずらしくいいことがあった。
ポストに警察からのハガキが入っていたのだ。
遺失物の連絡である。
思い当たることがあったので、瞬時に分かった。

先日、ノートパソコンのメモリをインターネット通販で購入したのだが、動作せず、それで別のメモリに交換してもらって、それでも動作しない。どうやら相性が悪いようで返品、返金対応してもらうことになっていた。
それで、メモリを返品のための封筒に入れて用意しておき、昼休みに郵便局に持っていこうと思っていたのだが、会社に出勤すると、封筒がどこにも見当たらない。どこかで落としたのだ。
メモリの返金といってもたかだか2、3千円程度。完全にあきらめていたところ、わざわざ警察署に届けてくれた人がいた。
確かに自分だったら届けるかもしれないし、それが普通だと思う人もいるだろうが、ここしばらく嫌なことばかりで人間不信になっていたので、これが奇跡的な出来事に感じた。

警察署に行き、簡単な書類に記入して、印鑑を押し、身分証明書を見せると、無事、受け取ることができた。
落とした場所を教えてくれたが、お礼は結構ということで、届けてくれたのはどんな方か分からない。

メモリがどうとか、金額がどうとか、そういう問題ではない。
世の中には、まともな人がちゃんと存在することを認識できたことで、今の私の心を浄化してくれた気がする。

2011年11月22日火曜日

ユーザーサポートはメールより掲示板がベター

個人でウェブサイトを運営していたり、フリーソフトやシェアウェアを公開しているような場合に、ユーザーサポートの窓口が必要になることがある。
簡単なのはメールや掲示板を使う方法だ。
その両方にメリットとデメリットがある。サポートを受ける側とサポートする側でも、メリットとデメリットは変わってくる。
ここではサイト運営者やソフト開発者の立場から見たサポートする側の視点で考える。

もしもメールと掲示板、両方でサポートしていたとしたら、ユーザーはどちらを選択するだろうか?
多いのはメールである。
サポートを受ける側は、自分の問題を解決することだけが目的であるから、他人のことなど関係ない。むしろ他人の目に触れない方が都合が良い。問題が解決すれば、いつまでも掲示板に発言が残っている必要はない。
サポートをする側に直接メッセージが届くので、回答を得られる確率も高い。
他人の目に触れないメールでは、どのようなことでも書ける。サポートする側に対して第三者が見て首を傾げるようなこともメールなら言えてしまう。人前で言えないことこそメールで問い合わせるのである。
一方、サポートする側としては、メールで行なっても、その個別の対応で終わり、他の効果はなにも得られない。

掲示板にすることで、同じ問題を持つ他のユーザーがいた時の情報源になり、以後のサポートを少しでも減らすことができる。
簡単な問題であれば、掲示板を見ている他のユーザーが代わりに回答してくれることがあるかもしれない(まず、ないが)。
掲示板自体がコンテンツとして機能し、サイトの集客効果を高めることも少しは期待できる。
誠実な対応をすることで、他のユーザーから見た運営者の印象も良くなる。
なにより、白昼にさらされることで、ユーザーは人前で言えないような内容の要求をできなくなる抑止効果が一番大きい。本来、人前で言えないことならメールでも言うべきでない。

掲示板でサポートする場合には、選択肢を与えないためにメールアドレスを公開しない方が良い。
個人情報を含む等、運営者と直接やり取りしなければならないような内容は、いったんその必要性を掲示板で知らせてもらい、一時的なメールアドレスで連絡をとるようにする。

さらに良いのはメールアドレスを公開して、そのメールアドレス宛の問い合わせはすべて掲示板に転載すると宣言することである。メールで問い合わせても強制的に掲示板へ投稿されるようにする。回答をするとしたら転載した掲示板側で行う。
メールの内容を見て掲示板に掲載するべきでない内容かどうかを運営者が判断できるし、掲示板に掲載できない内容が含まれていた場合には、その部分だけ伏字にして掲載してしまえば良い。

イニシアティブをとっておくために、ユーザーサポートについては掲示板での運用が良いと思う。
今までの多くの残念な経験から学んだことである。

Yahoo!マップのmoveendでズーム変更時のイベントが起こらなくなった?

Yahoo!のJavaScriptマップ。ひょっとして最近仕様変更された?
「moveend」のイベントを登録しておけば、地図をスクロールした場合の他、ズームを変えたときにもイベントが発生していたはずなのだが、どうもイベントが起こらなくなっているみたい。
それならと「moveend」に加えて「zoomend」もイベントリスナーを登録して、あっさり問題は解決。

それにしても自分のサイトにYahoo!地図を使っていて突然動作がおかしくなると、訪れたユーザーからの信頼感が失われるようで嫌な感じがする。
事前に分かるとありがたいのだが。

いずれにせよ今後はYahoo!デベロッパーネットワークのお知らせRSSをチェックすることにしよう。

NECアクセステクニカのルーター Aterm WR8700Nを購入

これまでNECアクセステクニカのAterm WB7000Hという古いブロードバンドルーターを使っていた。
WANのスループットが良く、機能的にもほぼ問題なくて、なにより毎日、安定して動作してくれていた。
無線LANのアクセスポイントも内蔵していたのだが、11bにしか対応しておらず、使っているとたまにルーター全体をフリーズさせることがあったのが、少し痛かった。

最近、サーバーのメンテナンスをしていて、LANでファイルコピーしていると、100Mbpsではかなり時間がかかることがある。数百GBのファイルともなると、何時間もかかるので、夜寝る前にコピーしておくというような状態で作業がなかなかはかどらない。

そこでギガビットのハブを買おうとPC DEPOに買い出しに行ったのだが、4ポートのハブで安いものでも3000円~4000円する。すぐ近くの売り場にあるルーターを見ると7000円代で買える。ハブだけに数千円払うのであれば、いっそのことルーターごと買いかえてしまっては?

と、いうことで購入したのは、同じNECアクセステクニカのAterm WR8700Nという機種。
同じような価格水準の製品でバッファローのものもあったが、以前、バッファローのサポートに電話をしたことがあって、自動応答のメッセージで散々質問され、最後には待ち受けメロディが流れるばかりで、オペレーターには繋がらない。
バッファローは設定の難しいネットワーク関連の製品をはじめとした様々な周辺機器を数多く販売している。サポートはそうとうに多忙なのだろうと想像する。
そうすると万一のときのことを考えたときに不安なのと、同じ会社の製品であれば、古い機種でできたことは、新しい機種でもできるだろうし、設定方法を改めて学習しなおすことも面倒。
以前と同じNECアクセステクニカの製品を選択した。

新しく購入したAterm WR8700Nは、期待通り、機能的にはほぼ満たされていて、安定して動作している。
無線LANはa、b、g、n全部に対応していて、今のところルーターをフリーズさせることもない。
設定画面はさらに洗練されていて、DHCP固定IP割り当て、ポートマッピングのポート番号範囲指定等、機能的にも強化されている。
ほとんどの項目で設定した後にルーターを再起動する必要がないのには感動した。

以前のルーターでは、複数プロバイダーと契約している場合等に使うマルチセッション対応なのは良かったのだが、WANから入ってきた接続をLANから戻すとき、入ってきたセッションにちゃんとつないでくれなかった。LANからWANに出る接続はデフォルトで優先先セッションに抜けてしまうためだ。そうさせないために静的ルーティングで送信元ごとにルーティングを設定する必要があった。
新しいルーターではそこも改善されていて、もう静的ルーティングを設定する必要はない。WANから入ってきたセッションはLANからの接続先セッションを自動的に振り分けてくれる。
ただし、このためにダイナミックDNSでハマってしまった。WANからの接続がなく、純粋にLANからWANに抜ける場合には、優先先セッションが選択される。そのままではグローバルIPアドレスを片方だけ使うようになってしまうため、結局、DNSルーティング設定をする必要があった。

ルーターを変えたそもそもの目的はLAN内をギガビット化することだった。このルーターはLAN内の通信で940Mbpsというスループットを誇っていて、実際にかなり速い。Windows7とCentOS間でファイルコピーした時、平均500Mbps程度の速度が出ていたが、ネットワーク速度をモニタしていると細かく上がったり下がったりしている。たぶん速すぎてどこか別のところがボトルネックになっていると思われる。

探せば欠点もないわけではない。
些細なことではあるが、ポートマッピングで設定の無効化ができなくなっているのもそのひとつ。
以前のルーターでは設定だけ登録しておいて、チェックボックスで無効化しておくことができた。そのため、同じポート番号に複数設定しておき、必要に応じて切りかえるような使い方ができた。
新しいルーターでは、有効、無効を設定するチェックボックスはなく、設定したものが即有効になる。また、ひとつのポートマッピングの設定はIPアドレスだけ、ポート番号だけ、といった一部を編集しなおすことはできない。書き換えるためには、いったん削除して作りなおさなれけばならない。
頻繁にポートマッピングを変更するようなルーターの使い方をするには少し不便である。
こうした点は、今後のファームウェアアップデートに期待したい。

僅かな不満もあるが、高性能で満足のいくルーターだと思う。

SQL Serverで現在の年月日をYYYYMMDD形式で作る

技術的なメモです。
SQL Serverのテーブルに文字列型で日付を格納しているような場合に、20111231といったようなYYYYMMDD形式にしていることがあります。
それらの中から今日以前といった条件で取得するために、現在の日付からYYYYMMDD形式の文字列を作りたい時があります。
以下の構文で作れます。

CONVERT(varchar, GETDATE(), 112)

例えば
select CONVERT(varchar, GETDATE(), 112)
とすると
20111122
等と返されます。

MySQL5.5.17 + Research Artisan Lite

以前、CentOS5.6とMySQL5.1の環境でResearch Artisan Liteというアクセス解析を使わせていただいていたのだが、サーバーがクラッシュして再インストールしなおした際、ついでにとCentOS5.7+MySQL5.5.17にバージョンアップしたところ、Research Artisan Liteの設定ができなくなってしまった。

最初のインストール後の設定画面でデータベースの設定をした後、
赤色で「入力内容に誤りがある為、データベースに接続できません。」
と表示される。

Research Artisan LiteはまだMySQL5.5に対応していないらしい。
「ra_core」ディレクトリの中の「*.sql」ファイルから「TYPE = INNODB」や「TYPE = MYISAM」と書かれている場所をgrepで検索して、「TYPE」を「ENGINE」に書き換えることで動くようになるらしい。
MySQLがバージョンアップして構文が変わったのが原因だ。
全部で19個のSQLファイルを書き換えたところ、無事設定することができた。

私はResearch Artisan Liteの他、Google Analyticsも併用している。
セキュリティやプライバシーの問題からだと思うが、Google Analyticsではアクセス元のIPアドレスを見ることや、個別のサイト訪問者のユーザーエージェントやページ閲覧履歴を追跡することができない。
サイト運営者としては、時には個別のユーザーの動向を調査したいことがあるので、これでは不便だ。
サイト閲覧者の利益は重要であるが、閲覧者がサイトを利用できるのは、サイト運営者が存在するからである。
世間への貢献という意味では、どちらかと言えばサイト閲覧者よりもサイト運営者の方が大きく、閲覧者はただ一方的に情報を頂戴するだけのことが多いと思う。IPアドレスや訪問者の閲覧履歴、ユーザーエージェントが、セキュリティやプライバシー上、滅多なことで重大な問題になるとは思えないし、私はこのGoogle Analyticsの閲覧者保護の部分があまり気にいっていない。
その点、Research Artisan Liteでは、一人ひとりの訪問者の動きを確認することが可能であり、手放せなくなっている。
様々な考え方はあるが、サイト運営者としてはResearch Artisan Liteの存在はありがたい。