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 が実行されるたびに再評価されますのでご注意ください。

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