ジョゼ・モウリーニョ | 良い本でも増刷されない現実と電子書籍の必要性。

number 2/9 を読んで少し感想を書いていたのですが、本が増刷されてないので、タイトルを変えました。

数ページですが、今のモウリーニョが上手くまとまっていて良いと思います。
最近は、サッカーを見ていないので、サッカーのことはわかりませんが、
モウリーニョは良いチーム作りをしてるんだろうなというのが伝わってきます。

モウリーニョの成績は異常ですね、すべてのチームで結果を出してるのが凄すぎます。
「強いチームを作れる人」
↓本は一冊しか読んでいませんが、おすすめです
↓モナコからチェルシーに移って快進撃を続けていた頃に出た本ですが、強いチームを作るために何をしたかがほとんど載っています。
↓紹介にも書いてある通りサッカーとかあまり関係なくチームを作りたい人にはオススメの一冊です。

あれ?残念なことに新品がないですね。なんでこんな良い本を増刷しないのか!!!!!
?電子書籍で出せば良いのに、そしたら増刷とか必要ないし・・・もったいない。

売れないけどそれなりに評価されてる本を電子書籍化して、そっちのほうが人気が出ちゃうというカオスに陥れば良いと思う。
今年は電子書籍の年ですよ。kindle touch日本から買える日も近い。(kindle keybordはamazon.comから購入可能です。)
自費出版や共同出版についてもいろいろ話は聞くので電子書籍にはその辺も期待出来ます。

出版社 / 著者からの内容紹介
監督歴たった4年でチャンピオンズリーグ優勝達成!成功の階段を駆け上がったこの男のブレイク・ストーリーは、どんな小説よりも面白い。
欧州フットボール界で最も話題の人。それは、どの選手でもない、監督「モウリーニョ」だ! 1963年生まれの若き指揮官は、その統率力でチェルシーに50年ぶりのリーグ優勝をもたらし、今年はプレミア&チャンピオンズリーグのダブル制覇が期待されている。本書は、前チームであるFCポルトで欧州頂点を極めて、チェルシーに移るまでの、ある意味、彼の監督キャリアの半生が詳細に描かれた公式本だ。傲慢・厳格ともとれる言動がメディアによく取りざたされるモウリーニョだが、その裏では繊細なアプローチでチームをまとめていく。そんな彼のスタイルには終始ブレがない。己を信じ、迷うことなく突き進む。選手(部下)の信頼も厚い。そこには、スポーツというカテゴリーを超えたマネージメント哲学がある。真の競争に身を置くすべての大人、必読の書である。
本人が唯一認めたモウリーニョ本、待望の日本語版刊行!!

経歴とかどうぞ→ http://ja.wikipedia.org/wiki/ジョゼ・モウリーニョ

one policy, one google experience ? 3/1に変わるようです。

Easy to work across products
プロダクト間の繋がりを簡単に。
Tailored for you
オーダーメイド的な?あなた用にします。
検索結果を各サービスからの情報でカスタマイズされる。
Easy to share and collaborate
共有・共同作業を簡単に。

個人的にデメリットはあまりないですが、使いたくないサービスも切り分けがなくなるところくらいですね。

とりさく 五反田ランチ

鳥丼定食750円
鳥丼、みそ汁、漬け物、大根おろし。

標準・需要と供給のバランス。
普通だと思います。

店の作りと言うか席は、悪い雰囲気ではないので、その辺が夜の評価に繋がっているのでしょうか?
750円は、金額だけで言うと高くはないので、オフィス街としてはこんな感じかなというところです。
個人的には少し高いかなと・・・

とりさく 五反田店 昼総合点★★☆☆☆ 2.5

いくつかの好きな店に行くタイプなので、普通への耐久力が落ちています。
でも普通を感じることで、あぁやっぱりあの店凄かったんだなと思えました^^;
ということでこの感じより下だとありえない。上だとまぁ良いのかなとそんな感じでした。

牛丼250円。ガスト390,490円。コンビニ弁当350-500円くらい。
金額以上とは言いませんが、ラインとしてこの辺を何か一つの指標で上回ってもらいたいものです。

property_exists | php

プロパティの存在判別が出来ないのかという話です。

http://www.php.net/manual/ja/function.property-exists.php

> isset() とは対照的に、 プロパティの値が NULL の場合でも property_exists() は TRUE を返します。

これだと思ったら

> property_exists() 関数は、マジックメソッド __get を使ってアクセスするプロパティを検出することはできません。

むー。

stdClassの場合。

$o = new stdClass();

var_dump($o->abc);
// PHP Notice:  Undefined property: stdClass::$abc in test.php on line 5
// NULL
var_dump(isset($o->abc));
// bool(false)
var_dump(property_exists($o,'abc'));
// bool(false)

$o->abc=null;

var_dump($o->abc);
// NULL
var_dump(isset($o->abc));
// bool(false)
var_dump(property_exists($o,'abc'));
// bool(true)

__get __setを書くと・・・

class myClass{
  private $data = array();
  public function __set($key,$value){
    $this->data[$key]=$value;
  }
  public function __get($key){
    return $this->data[$key];
  }
}

$o = new myClass();

var_dump($o->abc);
// PHP Notice:  Undefined index: abc in test.php on line 9
// NULL
var_dump(isset($o->abc));
// bool(false)
var_dump(property_exists($o,'abc'));
// bool(false)

$o->abc=null;

var_dump($o->abc);
// NULL
var_dump(isset($o->abc));
// bool(false)
var_dump(property_exists($o,'abc'));
// bool(false)

こんな感じで最後もfalseに。

is_null( $o->abc );
// PHP Notice:  Undefined index: abc in test.php on line 9
// bool(true)

myClassでsetする前にgetするとnullなんだけどnoticeが出る。

マジックメソッドがオーバーロードされているとプロパティ存在判別が出来ない。
判別できない状態でアクセスする警告が出るなぁと思った話ですが
__get 内で issetとかしてエラーを返さないでくれれば良いだけか。

php zend Lucene pagination

http://framework.zend.com/manual/1.11/en/learning.lucene.pagination.html
なんとなくコメントが面白いので。

検索結果のidだけキャッシュしておいて
次ページのときは、idからデータを取得しろというだけですが
この結果のインスタンスのサイズが半端ないので、全部キャッシュするのは無理です。

とりあえず、速度だけ計ってみました。

getDocument 100回
0.10254192352295 sec
0.093567132949829
0.091049194335938

search + 100データ取得 + 1000idをcache
0.86610412597656 sec
0.6905689239502
0.69413304328918

ということで、検索は、キーワードやデータ量でかなり変わりますが、getdocument100回のほうが速いことは分かりました。
ページングとキャッシュを実装しました。
基本的には、ページング以外にキャッシュが利用されることは稀なので、memcachedのメモリは少なめに設定です。

Greed is good. | 真山仁ハゲタカ第四弾、来週連載開始

ダイヤモンドに載っていたので。

真山さんの記事を読んで、ハゲタカ面白いよなとゲッコーのGreedは違うけど
(本当は、違うかどうかは分からない。何がマネーゲームか分からないので)
お金の話ではなくて、microsoft,apple,google,facebookは、ある種のgreedの強さの象徴な気がする。
最近は、「ヴィジョン」「ヴィジョン」ですが、ちょっとしたヴィジョンではなく、
ヴィジョンの限界点(限界を超えて)まで求めるgreed。
それかなと

ということでgreedであることは、良いことだと思います。
やり方が合っているか間違っているかは、それぞれで。

ということでハゲタカ第四弾楽しみですね!

真山仁さんのtwitterにニューヨーク取材などの
https://twitter.com/#!/jinmayama

ゴードン・ゲッコーのグリード名演説はこちら。

jobs bg kill | コマンド

コマンド実行中にctrl+zで一時停止。
$ suspend %1 同じ。1はjob id

$ jobs
[1]-  Stopped                 sh s123.sh
[2]   Stopped                 php s123.php
[3]+  Stopped                 php s123.php
$ kill -HUP %1
[1]   ハングアップ      sh s123.sh
$ jobs
[2]-  Stopped                 php s123.php
[3]+  Stopped                 php s123.php
$ jobs
[2]-  Stopped                 php s123.php
[3]+  Stopped                 php s123.php
$ kill -HUP %2
[2]-  ハングアップ      php s123.php
$ jobs
[3]+  Stopped                 php s123.php
$ bg %3
[3]+ php s123.php &

クリック&モルタルを読んだ。インターネットは革新的。

チャールズ・シュワブは、証券会社みたいですね。
http://www.schwab.com/

株価:90年後半のITバブルに乗っていますね。ちょうどこの上がりきった頃に出版された本です。
http://investing.money.msn.com/investments/equity-charts?CA=0&CB=0&CC=0&CD=0&D4=1&DD=1&D5=0&DCS=2&MA0=0&MA1=0&C5=0&C5D=0&C6=0&C7=0&C7D=0&C8=0&C9=0&CF=0&D8=0&DB=0&DC=0&D9=0&DA=0&D1=0&symbol=us%3aSCHW&SZ=0&PT=11

ブルームバーグとかもそうですが、この時期かもう少し先に金融系でITに突っ込んだところは素晴らしいですね。
当然の流れと言えば当然ですが、内情は知りませんが色褪せない?企業が多い気がします。
気がするだけで生き残っているところは少ないのでしょうが

株価をみてもわかりませんが、とりあえずの指標として、今でも期待されている企業なんだなと思うと本を読む価値もあるのかなと

キーワードとしてクリック&モルタルというと、ITと実業の組み合わせでみたいな感じですが、
この本のタイトル、クリック&モルタルは、ただの時代背景です。
内容は、「経営の本」でした。
経営というか戦略というか企業、プロジェクト、チームを引き上げる一冊として有効です。
内容は、ブームにもなった本なだけあって面白いし今でも通用する、今からでも読んで損しない内容です。
あまりビジネス系の本は読まないな〜と言う方にはオススメです。
ちょっと長いので適当に読み流す感じでも楽しめます。

「インターネットは革新的」って書いてありました。

今はよく覚えていないのですが、当時は、もうプログラミングとインターネットしかない!と思いました、当時は何も出来ませんでしたが。
これからも当分の間はいろいろ革新的だし、今は、多少の知識と経験もあるので、なんとかしたい。

Redis + predis | memcachedの代わりにRedisを使ってみる。

http://redis.io
http://redis.io/clients

memcachedを利用していた表示データをredisにしてみます。
消えても良いのですが、データが出来るまで寂しいので。
daily rankingやpublic activityとか
*永続的なmemachedですが、メモリーサイズより大きいデータは扱えないので、あくまでもmemcachedの代替。Virtual Memory機能はあるが非推奨。

1. redis install

# yum list redis
redis.x86_64                          2.0.3-2.el5                           epel
# yum install redis
Installing:
 redis           x86_64           2.0.3-2.el5              epel           303 k

config
http://redis.io/topics/data-types-intro
keyの付け方がフムフム。
» Try to stick with a schema. For instance “object-type:id:field” can be a nice idea, like in “user:1000:password”. I like to use dots for multi-words fields, like in “comment:1234:reply.to”.

First steps with Redis lists : リストは、ランキングに最適っぽい。
Set : グルーピングに使うのかな
http://redis.io/topics/twitter-clone
twitterの動き、list,setを利用して簡単にclone。分かりやすい。key-valueやるときにこれを一回触るのは良いかもしれない。

少し使ってみた感じkeysが使えたりlist,setがあるので、keyの階層構造にかなり良いかもしれない。

* config

include /etc/redis.conf
#
pidfile /home/junichi/data/redis.pid
#
port 52131
#
bind 127.0.0.1
# Specify the log file name. Also 'stdout' can be used to force
logfile /home/junichi/log/redis/redis.log
# The working directory.
dir /home/junichi/data/redis/
#
maxclients 30
timeout 10
#
maxmemory 16M

* start

 # redis-server /home/junichi/conf/redis.conf
 # netstat -na|grep 52131
tcp        0      0 127.0.0.1:52131             0.0.0.0:*                   LISTEN

* client test with host and port.

$ redis-cli -p 52131 -h 127.0.0.1

redis> PING
PONG
redis> INFO
redis_version:2.0.3
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:epoll
process_id:23081
uptime_in_seconds:748
uptime_in_days:0
connected_clients:1
connected_slaves:0
blocked_clients:0
used_memory:781808
used_memory_human:763.48K
changes_since_last_save:0
bgsave_in_progress:0
last_save_time:1327032046
bgrewriteaof_in_progress:0
total_connections_received:1
total_commands_processed:2
expired_keys:0
hash_max_zipmap_entries:64
hash_max_zipmap_value:512
pubsub_channels:0
pubsub_patterns:0
vm_enabled:0
role:master

redis> SET mytest "Hello"
OK
redis> GET mytest
"Hello"
redis> DELETE mytest
(error) ERR unknown command 'DELETE'
redis> DEL mytest
(integer) 1
redis> GET mytest
(nil)

データを残して接続を閉じる。

redis> SET mytest "SAVE ME"
OK
redis> QUIT

サーバーを落とす。shutdownではなくて、プロセスを落としてみる。

$ ps ax|grep redis-server
23081 ?        Ss     0:00 redis-server conf/redis.conf
$ sudo kill -9 23081

起動してみる。

$ redis-cli -p 52131 -h 127.0.0.1
redis> GET mytest
"SAVE ME"

保存されている。

ディスクに保存されるタイミングについて
* save,bgsave,shutdownを実行。重要なデータを入れた後は、bgsaveしておけば良いのかな。
* config のsave値になったとき

// 1個の更新で900秒後
save 900 1
// 10個の更新で300秒後
save 300 10
// 10000個で60秒後
save 60 10000

* 終了

redis> SHUTDOWN

logにbackground saveできないと警告が
# WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add ‘vm.overcommit_memory = 1′ to /etc/sysctl.conf and then reboot or run the command ’sysctl vm.overcommit_memory=1′ for this to take effect.

faqに 3GBのデータを持っていてfree memoryが2GBの時エラーになると。つまり、redisをディスクに書き込むとき、同じサイズのメモリーが必要になるから、vm.overcommit_memoryを有効にしていないとエラーになる。自分の場合は、メモリが少ないのでかなりの確率でなるから必須と。

Background saving is failing with a fork() error under Linux even if I’ve a lot of free RAM!
Short answer: echo 1 > /proc/sys/vm/overcommit_memory :)
And now the long one:
Redis background saving schema relies on the copy-on-write semantic of fork in modern operating systems: Redis forks (creates a child process) that is an exact copy of the parent. The child process dumps the DB on disk and finally exits. In theory the child should use as much memory as the parent being a copy, but actually thanks to the copy-on-write semantic implemented by most modern operating systems the parent and child process will share the common memory pages. A page will be duplicated only when it changes in the child or in the parent. Since in theory all the pages may change while the child process is saving, Linux can’t tell in advance how much memory the child will take, so if the overcommit_memory setting is set to zero fork will fail unless there is as much free RAM as required to really duplicate all the parent memory pages, with the result that if you have a Redis dataset of 3 GB and just 2 GB of free memory it will fail.
Setting overcommit_memory to 1 says Linux to relax and perform the fork in a more optimistic allocation fashion, and this is indeed what you want for Redis.
A good source to understand how Linux Virtual Memory work and other alternatives for overcommit_memory and overcommit_ratio is this classic from Red Hat Magazine, “Understanding Virtual Memory”.

次は、phpから利用。

2. predis install

http://redis.io/clients
predis か phpredisに星が付いています。

・predis
https://github.com/nrk/predis
・phpredis
http://code.google.com/p/phpredis/ https://github.com/nicolasff/phpredis

どっちでも良さそうだけど。
predisを使ってみる。
PHP >= 5.3 | Redis from 1.2 to 2.4

* download

$ git clone git://github.com/nrk/predis.git ./predis

自分の場合 autoloaderを自分で書いているので
namespace Predisのときは、Predisディレクトリを勝手に見るので、Predisディレクトリをリンクしておくだけ。

autoloaderを利用していなくても、
./predis/autoload.phpをインクルードするだけでOKです。

https://github.com/nrk/predis/wiki/Quick-tour
こんな感じで。

早速TEST
test.php

include(’../autoloader.ini’);

$redis = new Predis\Client(array(
‘host’ => ‘127.0.0.1′,
‘port’ => 52110
));

$redis->set(’library’, ‘predis’);
$retval = $redis->get(’library’);
echo $retval.”\n”;

OKでした。

パスワード2012・パスワード流出とか

・各ネットサービス
・メールなどアカウント
・サーバー
・銀行

どのようにパスワード運用していますか?
とりあえず、普通のサービスには、一定の捨てアドとパスワードを使ってしまっているのですが、
全サービス変えるのはなかなか厳しい物がありますね・・・
パスワードマネージャーのようなものを利用しているのでしょうか?

推奨されるパスワードは?
・8文字以上、ローマ字+数字+記号でしょうか12文字以上を推奨でしょうか、定期更新・・・

パスワード流出?
・パスワードそのまま保存しているのでしょうか?そういう企業もあるかもしれませんが、
普通は、ハッシュ値を入れてるので流出しても即利用はされないとは思いますが?

IDがメールアドレス
・全部同じメールアドレスを使っているので、バレバレですね。→サービス毎に変えるのは・・・

サーバー
・とりあえず、IP+更新時間から自動生成ツールで管理しようかと。定期更新・・・

ケータイ
・入力が面倒なんですけど・・・

ということで、自分用の管理ツールを作ろうかなと思いました。