2013年12月8日日曜日

ビジネスマンの父より息子への30通の手紙

6通
誠実さの代価
賢い人は、勝利よりも敗北から多くの教訓を得る

2013年12月5日木曜日

山本五十六の名言集

人を動かす

やってみせ、言って聞かせて、させてみせ、

ほめてやらねば、人は動かじ。


あるいは、


やって見せて、言って聞かせて、やらせて見て、

ほめてやらねば、人は動かず。


【有名なこの言葉には次のような続きがあります。】


話し合い、耳を傾け、承認し、任せてやらねば、人は育たず。

やっている、姿を感謝で見守って、信頼せねば、人は実らず。



この「やってみせ」の言葉は、部下を持つ管理者の方や、子育て中のお母さんなどに人気があり、山本五十六の名言の中でも有名な言葉です。

この「やってみせ」の言葉を、いつも心に留め置くものとして、 このような商品 があります。

記念品や贈り物、あるいは自分用にピッタリです。

男の修行

苦しいこともあるだろう。
云い度いこともあるだろう。
不満なこともあるだろう。
腹の立つこともあるだろう。
泣き度いこともあるだろう。

これらをじつとこらえてゆくのが男の修行である。



この「男の修行」は、山本五十六の代表的な言葉のひとつで、多くの経営者や指導者の方の座右の銘としている言葉です。

苦しい時、辛い時、この言葉を心の中で繰り返すと、心が落ち着きます。

そんな「男の修行」の言葉を、いつでも自分の側に置いておくことのできる このような商品 を見つけました。

就職のお祝いや、悩んでいる後輩に、あるいは自分用としても最適です。

アメリカとの闘い

是非やれといわれれば、初めの半年や一年は、ずいぶん暴れてごらんにいれます。
しかし二年、三年となっては、全く確信は持てません。
三国同盟ができたのは致し方ないが、かくなった上は、日米戦争の回避に極力ご努力を願いたいと思います。

(日米開戦後の見通しについて、当時の近衛文麿首相から聞かれた時の言葉)

実年者の態度

実年者は、今どきの若い者などということを絶対に言うな。
なぜなら、われわれ実年者が若かった時に同じことを言われたはずだ。

今どきの若者は全くしょうがない、年長者に対して礼儀を知らぬ、道で会っても挨拶もしない、いったい日本はどうなるのだ、などと言われたものだ。

その若者が、こうして年を取ったまでだ。
だから、実年者は若者が何をしたか、などと言うな。
何ができるか、とその可能性を発見してやってくれ。

国が滅びる時

陸軍との争いを避けたいから同盟を結んだというが、内乱では国は滅びない。
戦争では国が滅びる。
内乱を避けるために、戦争に賭けるとは、主客転倒もはなはだしい。

(日独伊三国軍事同盟の締結に際して)

博打について一言

博打をしないような男はろくなものじゃない。

人間味について

人は神ではない。
誤りをするというところに人間味がある。

覚悟

ああ われ何の面目ありて見(まみ)えむ大君に
将又(はたまた)逝きし戦友の父兄に告げむ言葉なし
いざまてしばし若人ら死出の名残の一戦を
華々しくも戦ひてやがてあと追ふわれなるぞ

(山本五十六の手記より)

2013年12月4日水曜日

InnoDBの意外な制約: Got Error 139 From Storage Engine


InnoDBの意外な制約: Got Error 139 From Storage Engine


環境: MySQL 5.0 (追記
某CMSにて、1つのテーブルにTEXT型のフィールドをたくさん(10前後)作ったところ、次のようなエラーが出てデータを保存できなくなった。
Got error 139 from storage engine
このエラーメッセージで検索すればいろいろと情報が出てくるが、こういうことらしい:
  • InnoDBの行サイズの上限はページサイズの約半分で、デフォルトでは約8000バイト
  • 可変長カラム(VARBINARY, VARCHAR, BLOB, TEXT)のデータは行の外部に保存されるが、先頭の768バイトだけは行の内部に保存される
  • よって例えば一つのテーブルに11個のTEXT型フィールドを作り、それぞれに768バイト以上のデータを入れようとすると、768*11=8448 > 8000 なので保存できない
ページサイズは8〜64KBまで設定できるが、変更するためにはMySQL本体をコンパイルし直した上でテーブルスペースとログファイルを再作成する必要 があるらしく、運用途中での変更は難しい。よってどうしてもInnoDBでなければならない場合は、テーブルを分割するなどして対処するしかない。
件のCMSの場合は特にInnoDBでなくても良かったので、テーブルをMyISAMに変換することで回避できた。

1
ALTER TABLE table_name ENGINE=MyISAM;
MyISAMの場合、行サイズの上限は64KBで、かつTEXTやBLOBの保存に要するのは9〜12バイトなので、同じ問題はまず起こらない。最近は特に何も考えずにInnoDBを使っていたので、ヒヤリとさせられた。
参考にしたサイト:

追記

SH2さんからのコメントで、MySQL 5.1+InnoDB Plugin/MySQL 5.5以降で新たなファイルフォーマット(Barracuda)を使用すれば状況は改善される、と教えていただきました。どうやらTEXT/BLOB一つあたり20バイトだけになるようです。詳細は以下のリンクなどを参照してください(私もまだ読んでいる途中ですが)。



http://tkyk.name/blog/2010/12/13/MySQL-Server-innodbgot-error-139-from-storage-engine/


[PostgreSQL][MySQL]整数の乱数

http://nejimakitori-chronicle.seoid.net/%E7%A7%81%E4%BA%8B/postgresqlmysql%E6%95%B4%E6%95%B0%E3%81%AE%E4%B9%B1%E6%95%B0/

MySQL絡みで、ある範囲の整数の乱数を取得するサンプルを探していたら、
リファレンスに載っていた。
灯台もと暗しとはこういうことですね。
MySQL 5.1 リファレンスマニュアル (オンラインヘルプ) :: 7.5.2 数学関数
i <= R < j の範囲のランダムな整数 R を取得するには、式 FLOOR(i + RAND() * (j – i)) を使用します。
たとえば、7 <= R < 12 の範囲にあるランダムな整数を得るには、次のステートメントを使うことができます

1SELECT FLOOR(7 + (RAND() * 5));
余談だけど、
こんなことも書いていた。
WHERE 節内の RAND() は、WHERE が実行されるたびに再評価されますのでご注意ください。

キャッシュされていると思いきや、再評価されるんですね。
気をつけておかないと。。。


2013年10月4日金曜日

失意泰然、得意冷然(運に恵まれない時は、慌てず泰然として構え努力せよ。恵まれたときは、運に感謝し、冷然と努力せよ)(P257)

http://d.hatena.ne.jp/shinwada/20090906

2009-09-06 任天堂の社名の「意味」に学ぶ ~失意泰然、得意冷然~ このエントリーを含むブックマーク このエントリーのブックマークコメントAdd Star

日本経済新聞社との共同による「モノやお金の仕組みDS」Wiiでのインターネット接続率向上に向けたインターネットチャンネルの無償化など、ゲームの領域を超えて更なる「DS」と「Wii」の水平展開を仕掛け続けている任天堂。私も何度か任天堂の話を書かせて頂きましたが(三十歳から四十五歳を無自覚に過ごすな ~任天堂社長 岩田聡氏~任天堂 売上高2兆円突破を記念し、数字を色々集めてみましたなど)、ちょっと前に出版された下記の任天堂本を読みたい読みたいと思いながらも先送りにしていまして。。先日ようやく読み終えました。。
任天堂 “驚き”を生む方程式
「今までの任天堂」と「これからの任天堂」をわかりやすく纏めてあり、単純に「面白い本」なのですが、加えて「あーこんな会社で仕事してみたいなー」と素直に思わせてくれる良書だなと思いました。やっぱかっこいいですね、任天堂。その会社としての「立ち振る舞い」が本当にかっこいいなと改めて思いました。
そんな良書「任天堂 “驚き”を生む方程式」の中で、とても印象に残る言葉がありましたので、是非ご紹介したいのですが。。
それは任天堂3代目社長で今の任天堂王国を築きあげた立役者、山内溥氏が考える「任天堂という社名の意味」についてのお話。山内さんはご自身が考える「任天堂」という言葉の意味をこのように語っておられます。
f:id:shinwada:20090906124312j:image
人生一寸先が闇、運は天に任せ、与えられた仕事を全力で取り組む。これが山内が定義した、ニンテンドウの社名の由来である。(P256)
またこれに合わせて、この山内さんの座右の銘も紹介されています。
失意泰然、得意冷然(運に恵まれない時は、慌てず泰然として構え努力せよ。恵まれたときは、運に感謝し、冷然と努力せよ)(P257)
この2つの文章を合わせて考えてみると、「人生どうなるかわからない。運は天に任せ、だけどもその日その日を一生懸命全力で生きよう。その結 果、運に恵まれなかったとしても、今回は運が無かったと思い、次に進んでいこう。また恵まれた結果が出たときは、運が良かったと思い、運に感謝して冷静に 今までの努力を続けよう」、私はそんな解釈をしました。
若干唐突ですが。。。英国哲学者ジェームス・アレンという有名な方がおられまして、「原因と結果の法則」という著書があります。これは、「全ての物事は原因があるから結果があるわけであり、自分の人生の創り手は自分自身である」ということが述べられていて、私の好きな書物の一つであります。
「原因」と「結果」の法則
「原因があり、結果がある」。この関係を考えた場合、「運」という要素を排除して「全ての結果は必然である」と考えてしまうと、やっぱり結果 が出ないこともあるわけでして、その結果が出ない場合、「自分の努力が足りなかったんだ」など「自分起因の原因」を必要以上に責め立てて、そこで立ち止 まって前に進めないというようなことがあるように思います。
ですが、「運に任せる」という考え方に立つと、「自分起因の原因」の段階で最善を尽くし、「結果は運である」と捉えられれば、仮に結果が出な い場合でも、自分を必要以上に責めることなく、改めて前を向いて進めるような気持ちになれると思いますし、仮に結果が出たとしても、「それは運が良かった んだ」という謙虚な気持ちにもなれるように思うんですね。
私は今まで物事の考え方の中心に「運」というものを置いて考えたことがあまり無くて、「運に任せる」というとある意味他力本願的な印象を持っていたんですが、決してそうではないんですね。
「失意泰然、得意冷然」。そんな言葉を通して私達に生き方・在り方を教えてくれる任天堂という会社を、今後も応援していきたいな、そんなことを改めて思いました。

2013年9月8日日曜日

雑談力があがる話し方

雑談は中身がないことに意味がある

悩んだら、まずほめる。なんとなくほめる。相手のみえるところを、とりあえずほめる。

雑談の極意は相手本位

相手から出てきた言葉に、質問という形で切り返す力
これをやるだけで、聞き上手に変身

かつて日本には、相手に対して興味を持つことが礼儀だった時代があった

2013年9月1日日曜日

カウンセラーの聞く技術

相手のタイミングで遊び、相手のタイミングで話をきいてあげる、これが相手に対してできる最大のこと それ以外は他の人のことはできない

2013年8月7日水曜日

http://d.hatena.ne.jp/omoon/20111217/1324109105


A Small, Good Thing

2011-12-17

isset() 関数にご用心! ( #phpadvent2011 Day 17 )Add Starcaesarkazuhitoatkuratsuyok

PHP Advent Calendar 2011 の 17 日目です。昨日はhajikamiさんの「[PHP] == による文字列比較をしてはいけないことを理解する #phpadvent2011 16th | Prog Blog From 憩い場所」でした。
みなさんこんにちは。17 日目担当の omoon です。普段は大阪WEB アプリケーションを作ったりしている会社におりまして、PHP は触り始めて 10 年ぐらいです。
本当はもっと早く記事を上げる予定だったんですが、急遽下のような仕事が入りまして遅くなりました。ごめんなさい。
>
さて、みなさんは配列の要素の存在確認ってどうされてますか?
僕は、PHP を始めてからずっと無条件で isset() 関数 を使っていたのですが、ついこの間、えー、うそん!的なハマりを体験いたしましたので、もうご存知の方には面白くともなんともない話だとは思いつつ、恥を晒す覚悟でまとめてみたいと思います。

isset() 関数はその配列要素が存在しても値が null なら false

null でも false なんです!知らなかった。僕は単純に知らなかった。マニュアルの一番最初に書いてあるのに。。
isset ― 変数がセットされていること、そして NULL でないことを検査する
PHP: isset - Manual
<?php
$noodles = array(
    'udon'   => 'white',
    'soba'   => 'gray',
    'pasta'  => 'yellow',
    'malony' => null,
);
isset($noodles['udon']); // true (知ってた)
isset($noodles['malony']); // false (えー、知らんかった!)
isset($noodles['somen']); // false (知ってた)
つまり、単純に配列要素の存在だけを確認するために、isset() を使っていると、要素自体は存在するのに false が返ってくることがあるということです。つい先日、これでバグ出しました。ごめんなさい。
ということで、配列要素の存在の確認には、array_key_exists() が良いみたい。
<?php
$noodles = array(
    'udon'   => 'white',
    'soba'   => 'gray',
    'pasta'  => 'yellow',
    'malony' => null,
);
array_key_exists('udon', $noodles); // true
array_key_exists('malony', $noodles); // true
array_key_exists('somen', $noodles); // false
お恥ずかしい限りですが、またひとつ賢くなりました。

配列の要素の要素などに isset() 関数を使うときの注意

で、ついでにもうひとつ。
配列の要素の存在確認に isset() を使う癖が付いているとこういう勘違いもしてしまいがち、という例をお話しします。そして、これでもバグを出しました。ごめんなさい。
配列の要素の要素の存在を調べたいと思ってやってしまったこんな例です。
<?php
$noodles = array(
    'udon'  => 'white',
    'soba'  => 'gray',
    'pasta' => 'yellow',
    'malony' => null,
);

isset($noodles['udon']['color']); // true (えー、うそん!)
echo $noodles['udon']['color']; // 'w' が出力される (なにそれ?)
これはさっきの話よりは少し複雑ですので、詳しく見ていくことにします。今から説明する2つのことが関係します。

(1) 文字列へは、[] を使って文字単位でアクセスできる

これ、意外と知られていないと言うか、最初知ったときは、何それー、と思うと思うんですが、つまり、
<?php
$name = "Santa Claus";
echo $name[0];  // S
echo $name[1];  // a
echo $name[2];  // n
echo $name[3];  // t
echo $name[4];  // a
echo $name[5];  // ' ' 
echo $name[6];  // C 
echo $name[7];  // l
echo $name[8];  // a
echo $name[9];  // u
echo $name[10]; // s
ということ。
ちなみにこんな風に書き換えることも可能。
<?php
$name = "Santa Claus";
$name[0] = 'P';
$name[3] = 'd';
echo $name; // Panda Claus(誰?)
まずこれが関係することの 1 つ目です。

(2) 型の相互変換

PHP: 型の相互変換 - Manual のページには、
PHP は、変数定義時に明示的な型定義を必要と(または、サポート) しません。ある変数の型は、その変数が使用される文により定義されます。 これは、ある文字列変数 var に代入した場合には、 var は文字列になることを意味しています。 ある整数値を var に代入した場合には、 その変数整数になります。
とあります。要は、時と場合によって文字列が勝手に数値になることがあるよ、ってことですね。
で、その時と場合のひとつが文字列変数に続く[] 内の文字列の場合で、
<?php
$name = "Santa Claus";
echo $name['firstName']; // これは'S'と出力される
となります。
つまり、文字列変数 $name に続く [] 内の文字列「firstName」が数値「0」に変換されるため、$name[0] と同義となり、$name の 1 文字目の「S」が出力されることになります。
でも、なぜ「0」なのか。
実はこの挙動PHPマニュアルこのページの「文字列の数値への変換」セクションにきちんと書いてあります。
数値として文字列が評価された時、結果の値と型は次のように定義されます。
文字列の 中に '.' や 'e'、'E' といった文字が含まれず、 数値が integer 型の範囲内 (PHP_INT_MAX で定義されています) におさまる場合は integer として評価されます。それ以外の場合は、すべて float として評価されます。
文字列の最初の部分により値が決まります。文字列が、 有効な数値データから始まる場合、この値が使用されます。その他の場合、 値は 0 (ゼロ) となります。有効な数値データは符号(オプション)の後に、 1 つ以上の数字 (オプションとして小数点を 1 つ含む)、 オプションとして指数部が続きます。指数部は 'e' または 'E' の後に 1 つ以上の数字が続く形式です。
見落としがちですが、
文字列が、 有効な数値データから始まる場合、この値が使用されます。
とありますので確かめてみます。
<?php
$name = "Santa Claus";
echo $name['1stName']; // これは'a'と出力される
となるんですね。
ここでも文字列が数値に変換されるのは同じですが、今度は [] 内の文字列「1stName」が有効な数値データ「1」から始まっているため、$name[1] と同義となり、$name の 2 文字目「a」が出力されるというわけです。
これが、関係することの 2 つ目です。

で話をもどして、配列の要素の要素の存在確認は、、

さて、この 2 つのことを頭に入れて、先ほどの
<?php
$noodles = array(
    'udon'  => 'white',
    'soba'  => 'gray',
    'pasta' => 'yellow',
    'malony' => null,
);

isset($noodles['udon']['color']); // true (えー、うそん!)
echo $noodles['udon']['color']; // w (なにそれ?)
を順に説明してみると、
となります。
ということで、配列の要素の要素の存在確認は、
<?php
$noodles = array(
    'udon'  => 'white',
    'soba'  => 'gray',
    'pasta' => 'yellow',
    'malony' => null,
);

if (is_array($noodles['udon'])) {
    array_key_exists('color', $noodles['udon']);
}
のように、
  • 配列であるかどうかを確認した上で
  • array_key_exists() を使って確認
するのが良いようです。
と、色々話してきましたが、実はこのあたりの内容については、PHPマニュアルにも幾つかコメントがついています。
困ったら PHP マニュアルに帰れ!(コメント欄も含めてね)、という素晴らしい定説を確認できたところで、僕の話しを終わりたいと思います。
みなさん、良いクリスマスを!

2013年6月29日土曜日

http://d.hatena.ne.jp/rx7/20100407/p1



Apacheで「Invalid command '\xef\xbb\xbf'」(UTF-8ファイルからBOMを削除)Add Star


とある環境で、いただいたApacheの設定ファイルを配置し、configtestを行うと、以下のエラーが出た。
Invalid command '\xef\xbb\xbf', perhaps misspelled or defined by a module not included in the server configuration
ファイルの文字コードは、UTF8でしたが、"EF BB BF"は「BOM」と呼ばれる、テキストがUnicodeで書かれているか、や、記述形式の識別を行うための符号らしい。
(恥ずかしながら初めて知った。)
■BOM (Byte Order Mark, バイト・オーダー・マーク)
UnicodeのUTF-16などの16bit単位の文字エンコーディングスキームでは、8bit単位でデータを配列する際のエンディアンと して、ビッグエンディアンとリトルエンディアンの両方を許している。そのため、どちらのエンディアンで記述されたデータかを確実に判定するための特別な マークとなる符号として、BOM(Byte Order Mark)が用意されている。
またBOMは、あるテキストがUnicodeで記述されているかどうかを自動判定する手段として使用される場合もある。この目的に使用される場合は、エンディアンが存在するUTF-16だけでなく、エンディアンが存在しないUTF-8のテキストに付加される場合もある。
XML用語事典 [BOM (Byte Order Mark)]

vimで、このBOMを除去する

:set nobomb
:w
こんな感じで、BOMを消してから保存します。
これだけ。

nkfでも出来そう

"man nkf"を眺めていると、OPTIONSのところに以下の記述があります。
-w -w8[0] -w16[BL][0]
    Unicode を出力する。

    -w -w80
        UTF8 コードを出力する。 (BOM 無し)

    -w8 UTF8 コードを出力する。

    -w16 -w16B0
        UTF16 コードを出力する。 (Big Endian / BOM 無し)

    -w16B
        UTF16 コードを出力する。 (Big Endian / BOM 有り)

    -w16L
        UTF16 コードを出力する。 (Little Endian / BOM 有り)

    -w16L0
        UTF16 コードを出力する。 (Little Endian / BOM 無し)
nkfコマンドで、上記オプションを付けて出力してやれば良さそうです。

2013年6月12日水曜日

 HKT48に移籍した指原は、自ら後進の指導にあたり、それを自らの役目とした。「財を残すは下、仕事を残すは中、人を残すを上とする」と語る名監督・野村克也氏ばりのプレイングマネジャーとして活躍。HKT48メンバーを大島優子らAKB48メンバーに紹介して交流させたほか、「スキ!スキ!スキップ!」の表題曲選抜に入れなかったチームH最年少12歳の田中菜津美の“ボスキャラ”を発見して世に広め、SKE48終身名誉研究生・松村香織のソロデビューのプロデュースを行うなど、「指原再生工場」とでも呼ぶべき後輩の人材育成にもまい進してきた。移籍という“椿事”すらも笑いに変えて、タモリ、明石家さんま、ビートたけしのお笑いBIG3からもそれぞれ大いにイジられるという、めげない姿勢も、支持率上昇の要因だろう。




 「知るを楽しむ」の野村克也監督の特集で、印象に残ったのが次の言葉。  財を遺すは下、事業を遺すは中、人を遺すは上なり これは後藤新平の言葉で、次のように続くそうだ。  財を遺すは下、事業を遺すは中、人を遺すは上なり、  されど、財なくんば事業保ち難く、事業なくんば人育ち難し 後藤新平が倒れる日に三島通陽に残した言葉は、次のようなものだったという。  よく聞け、金を残して死ぬ者は下だ。仕事を残して死ぬ者は中だ。  人を残して死ぬ者は上だ。よく覚えておけ。

2013年1月19日土曜日

2013年1冊目

上司は部下より先にパンツを脱げ
面白い!


 炎天下に砂漠で、3人の男がレンガを積んでいる。 

1人目の男
「俺はレンガを積んでいるんだ」と怒っている

2人目の男
「レンガを積んで壁を作っている」と1人目よりは楽しそう

3人目の男
「砂漠に大聖堂を作っている」と、満面の笑み