だるろぐ

2012-02-09

レプリケーションフローチャート

| 01:32 | レプリケーションフローチャートを含むブックマーク

mysql40dumpを使おう。


始まり。


DBMSmysql

  • いいえ
    • 知るか。帰れ
  • はい
    • 下へ

mysqldのバージョンは4.0以上?

  • いいえ(=3.x以下)
    • mysql40dumpがサポートしてるかは知らんが、そんなもの使ってるお前は帰れ
  • はい
    • 下へ

テーブルのEngine(4.xならType)はInnoDB

  • はい
    • mysql40dumpで何も問題ないだろ、帰れそしてさっさとやれ
  • いいえ(=MyISAMが存在する)
    • 下へ

dumpしたバックアップが存在するか?

  • はい
    • 帰ってそれ使ってさっさとやれ
  • いいえ
    • 下へ

レプリケーションしたいDBに、そもそも既にslaveが存在するか?

  • いいえ
    • mysql40dumpでも無理だから、レプリケーションしたいDBを一時的に停止するしかない。帰ってそう伝えろ
  • はい
    • slaveで全てのテーブルで ALTER TABLE $table ENGINE=InnoDB; してからmysql40dumpだ
トラックバック - http://d.hatena.ne.jp/hirafoo/20120209

2012-02-08

雑感

| 01:27 | 雑感を含むブックマーク

俺はコードを書くことができる。

が。

  • ログやmod_statusを頼りにサービスの状態を可視化することはできない
    • なのでサーバの状態、コードの改善すべき点などを発見できない
  • そもそもコードを書く土台を作れない
  • ミドルウェアに明るくない
    • 今動いているものより性能のいいものを取り入れたりして負荷軽減やサーバ軽減などができない
    • デフォルトのconfigそのままで、各パラメータの細部まで把握していない
    • 何かしたいことがあったときにそれを実現できない
  • 障害が起こったときに即座にアタリをつけられない
    • 経験も知識も足りない
    • straceやtcpdumpとかを駆使して情報を得られない
  • perlしかできない
    • それも少々
    • 他の言語で作られたサービスに対応できない
  • というかそもそもお金を得るためにコードを書くところまでもってこれない
  • デザインもできない
  • 人をまとめられない
    • そもそも集められない
    • 議論を開けない
      • 人の意見を取り入れる・物事を進めることができない
  • そもそもコードもそんな書けない
    • 誰でも書ける程度のものしか書けない
      • 俺個人の能力に価値が無い
    • 居なくなっても影響が無い
      • 有るようならそもそもそんな状況が終わってる
    • 他の人より特化した能力が無い
  • 自分のみで何かを生み出すことが出来ない
  • lanを構築することが出来ない
  • メールサーバも構築できない
  • セキュリティに明るくない
  • 英語が出来ない
    • confのコメントが読めない
      • 読んでも正確に意味を読み取れない
    • 意思疎通が出来ない

飽きたので中断するけどこんな感じで出来ることはほんの一握りで、出来ない事のほうが圧倒的に多い。

出来ない事はもっともっとある。あれもこれも出来ないし知らない。一人ではほぼ何も出来ない。

というか一人で何でも出来る人なんてめったに居ない。居たらそいつ一人で会社起こして事業してればいい。そしてそれはとても難しい。

だから先のエントリのように会社に属して集団で仕事するんだよねー


というのを理解した上でそれでもぶん投げたい日々もある。だって(自粛)

あー元々こういう下らない事を書いていたんだったブログでは。

トラックバック - http://d.hatena.ne.jp/hirafoo/20120208

2012-01-19

自分は自分が駄目だと思っているけどそれ以上に駄目だという話

| 00:57 | 自分は自分が駄目だと思っているけどそれ以上に駄目だという話を含むブックマーク

友達と話してきて、色々説教食らったのでそのことについて。


自分には感謝の気持ちがたりない

まず、仕事があって当然ではない。

会社は賃金を払って俺を雇っている。自分は働いたら賃金をもらえる。

「働いたら金をもらえる」というのはごく当たり前のことだと思っていた。

が。

「金を得る」のは簡単でも、「金を産む」のはとても大変だ。

勝手に無から金が生まれるわけはない。自分が身一つで金を生み出すとなると、会社を作るにしても、設立、資金、労力の確保、時間、そもそも設けるための仕組みの考案、調査など、色々なものが必要になり、また成功しなかったら、というリスクまで背負う。言うまでも無くそれは大変なことだ。

会社というのはそれら全てが既に終わっている。また、会社が倒産したとしても、自分にリスクは一切無い。次の会社を探せばいいだけである。

自分はノーリスクで、「働けば金を得られる」という仕組みに参加させてもらっている。

また会社はお金を儲けなければならない。が、自分はそれに貢献できないかもしれない。というか新入社員が即お金を儲けられるかというとそんなわけはない。

しばらく会社は新人を育てなければならない。使い物になり、お金を稼ぐだけの能力を身に付けるまで。

その間こちらは会社から金をもらいながら自分の能力を育て、勉強することになる。させてもらえることになる。


基本的に日本の会社ってのは一度雇用されたら相当の事をしない限りクビにはならないようにできている。その辺の決まり事は労働者が知ることができる。雇用契約書とかで。

海外は雇用主の気分一つで労働者の首があっさり飛ぶ。海外は夢の楽園じゃない。


自分が会社で働けていることの意味を考えて、理解して、感謝しろ。

真っ先に否定することは自分の底の浅さを露呈する

相手の発言の背景を考えること。どんな場面においても。

例えば政治を例に挙げて。

国民が政治家を馬鹿だ無能だと言うのは簡単だが、頭の出来で言えば、確実に政治家の方が上。

こちらは政治を行うにあたって何が必要か、どんな能力が必要とされて、何をどうすりゃいいか全く知らないし分からない。

あと政治家を選んだのは国民。自分で選んどいてその結果当選した政治家を罵倒って、おいおいその罵倒相手を選んだのはお前自身じゃねえかと。

あれこれ文句言うならば、お前が政治家になって同じだけの能力を身に付けて、背景・事情を把握した上でやれと。


例えばこう言われたとする。

プログラマって楽な仕事よねー、一日中エアコンの効いた部屋で座りながら好きなパソコンいじりしてりゃいいんだから」

そうしたら、きっと

「おいおい何馬鹿言ってやがる、こっちの現場見たことも、やったこともないくせに」

と憤るだろう。

先の例で、政治家に文句言うだけなら楽だろ、というのはこういうことだと。

実際の現場も全然分かっちゃいない奴がこんな事言ってきたら、言った相手は馬鹿だとみなされる。

そして、底が浅い奴だと。

簡単にそんな発言が出来る奴は、間違いなく、確実に考えも知識も足りない。むしろ、無い。

というように、何も考えもせず安易に批判を言うと、自分の馬鹿さ、無能さ、無知さ、つまり底の浅さを露呈することになる。

まず、何か言う前にちゃんと考えろと。

先の例で言うと、政治家がどんだけ馬鹿な判断を下そうと、そこには自分の知らない考え・事情・背景があったはず。

素人の自分が、何も分からず考えず安易に無能だと批判すんじゃねえと。


これは当然どんな場でも同じで。

職場で、どんな提案をされたとしても、真っ先に否定・批判するんじゃなくて、何故相手がそういうことを言ってきたか考えること。

言う側は自分よりもユーザに近く、何が求められているかを知っている。経験もある。

そんな相手が言ってきたのだから、確かにそこには何かしらの根拠がある。

また、


営業「開発は楽でいいよな、俺たちが考えてやった仕組みを作ればいいだけなんだから。俺たちが必死に外回りしたからお前らがやる仕事があるんだっつの。それを実装難しい、納期がどうだのと蔑ろにしやがって」

開発「営業は何考えてやがんだ、こんな仕様のシステム作れるわけねえだろが、夢か魔法でもくれてやれ。それもなんだ、この納期。あいつらは1日が50時間くらいあると思ってんじゃねえか?」


とかいう現場があったとして。ちなみにこれは「アホでマヌケなプログラミング」という本に載っていた文章をベースにした。これって引用で罰せられたりすんのかなまあいいや許して。「営業と開発は分かり合えないものなんですか?」とかいう場面で「世の中こんなもんですよ」ってな感じで載っていた気がする。

で。

これも、相手がどんな立場で、何を考えてその行動に至ったか、を考えるということがゴッソリ抜け落ちている。

自分からしたらどれだけずれていようが、まずそこを考えるのが大事。


なので。例えば。

という案件があったとして。

一度ログインしたら二度とログアウトしないようにしてください。ガラケーってそういう文化なんで。

とか言われたとして。

  • 複数アカウント使いたい人どーすんの
  • ガラケーでそれが出来ていたのは個体識別情報を使う悪しき忌まわしき手法セキュリティ個人情報機種変更とか色々問題だらけなのを知った上での発言なのかそれは
  • そしてアプリじゃないと無理だ、クッキーって知ってますか、有効期限って知ってますか
  • ターゲットの層は分かった。で、作ろうとしているサイトは何向けのサイトだ?
  • PCからアクセスされたら?ua偽装とかwifiとか(略)

とか冷静に いやうん、やめよう。

ただただ俺が未熟だった。


とにかく。まず相手の背景を考えろ。分からなければ聞け。その上で判断しろ。

何も考えずに否定するのは自分の器の小ささ、底の浅さを露呈するだけだ。


そもそもこんな事考えるまでもなく、人と話して真っ先に批判されたら相手だって怒るし、人付き合いできねーだろ、と。それじゃ友達もできないぜ。


俺は穿ったものの見方をしている

言われたのが、俺は上から目線だということ。

俺は社会に出て、周囲を見て、自分がどれだけ馬鹿で、周りの人が普通に出来ることすら出来ない、そんな駄目な奴だというのを分かったつもりでいる。

それでも、まだ上から目線でものを言っている。自分はお前らより賢いと思っている。

と指摘された。

先に挙げた話にも通じるけれど。

相手は自分が思うより賢く、自分は思ってる以上に馬鹿であると分かれ。

自分は賢いなんて思ってたら、恥かいて終わる。


そもそも色々と考えがおかしい

例えば、ブスが「私ってブスよねー」と言ってて、それに対して「いやそんな事無いよ」って言ったとしてさ?

そこでブスが「えっ、私ってもしかして可愛いんじゃね」とか思うのはおかしいだろ?どんだけポジティブなのよ、って話。

お前はそういう考えなのよ

と言われた。

要は相手が言ったことを鵜呑みにするとか、ましてやプラスに捉えるとかどんだけお前は幸せな頭してんだ馬鹿野郎と。

「お前それじゃ行間読めないでしょ」とも。

「つまり空気読めないってことだよな?」と訊いたら、

「それは違う。そもそも空気読めってのは何つーか、**が使う言葉で…」すまん、ここ忘れた。

浅慮だったか、何だったか…何にしろ、「空気読め」ってのは使ってると頭悪いとかそういうふうに見なされる、とか、だった気がするが自信無い。

とにかく。俺は相手が言っていることを正確に理解しきれていない。自分に都合良いように解釈している。

自分なりに思うと、反省が足りないしそもそもそう考えられる頭がおかしい。


など。

この友達は大分尊敬できる奴でいい奴なのだけど、話の途中、割と諦められかけた。

  • その歳でそれが分からんようじゃお前、ちょっとやばいな
  • もし35歳でそれなら手遅れだけど、お前はまだまだ余裕なんだから今のうちに
  • (俺と少し話した上で、頭を抱えながら)何でこれが分からねえんだ…俺の伝え方が悪いのかな…
  • ああ、それじゃ駄目だわ。そりゃそういう評価するわ(どういう意味になるのかは察してくれ)

大分グロッキーにさせてしまった。

こんな駄目な俺を相手にさせてすまんかった。


俺も大分反省した。が、こいつも言っていたが、人間そう簡単に変わらない。

今までずっとそういう考えで生きてきたのが、1日・1週間・半年くらいじゃ変わらない。

でも自分が駄目なのは今まで以上に分かったし、友達に何度も世話と迷惑かけて説教してもらったので(今まで何回もある)言われた事を忘れずに、まっとうな人間目指していこう。

rightgo09rightgo09 2012/01/21 10:22 色々と共感、納得、思考しました。
一つお伺いさせてください。
ご友人はご友人で上から目線で説教しているようにも感じられましたが、それは親睦度ゆえでしょうか?

hirafoohirafoo 2012/01/21 13:34 そうですね。
「これだけ言われたら不快に思うかもしれない、逆ギレされるかもしれない」なんてことくらい相手も分かっているし、そもそもここまで考えて、僕でも分かるようにもの言って、あちこち指摘するのはかなり労力が要る上にとても面倒なのですが、それでもここまで僕のために言ってくれる、付き合いの長い大事な友人です。

rightgo09rightgo09 2012/01/21 20:23 ありがとうございます。
上から目線で「お前は上から目線だ」と言われても説得力ないかなとちょっと思いましたので。
尊敬できる友人は、ホント大事ですよね。

トラックバック - http://d.hatena.ne.jp/hirafoo/20120119

2012-01-18

create table して ERROR 1005 (HY000): Can't create table '$DB_NAME.$TABLE_NAME' (errno: -1) と言われたら .ibd ファイルが何故か存在しているから消せばいい

| 02:44 | create table して ERROR 1005 (HY000): Can't create table '$DB_NAME.$TABLE_NAME' (errno: -1) と言われたら .ibd ファイルが何故か存在しているから消せばいいを含むブックマーク

タイトル読んでお疲れさまでした。以上。


メモ

innodb_file_per_table の設定をしておくと、テーブルを作ると .ibd ファイルが作られる。

ref: http://nippondanji.blogspot.com/2009/01/innodb_16.html

drop table すればこのファイルも消える。


テーブルを作るとき、既存テーブルと同名だった場合は分かりやすいエラーが出る。

mysql> create database foo;
Query OK, 1 row affected (0.11 sec)

mysql> use foo
Database changed

mysql> create table bar(a int) engine=innodb;
Query OK, 0 rows affected (0.01 sec)

mysql> create table bar(a int) engine=innodb;
ERROR 1050 (42S01): Table 'bar' already exists

が、何故かテーブルは存在しないが .ibd ファイルは存在するという不思議な環境のもとでは、以下のように言われる。

mysql> create table bar(a int) engine=innodb;
ERROR 1005 (HY000): Can't create table 'foo.bar' (errno: -1)

おとなしく .ibd を消せばいい。というかそんな状況になってる時点で何かがおかしい。

# ls ~mysql/foo/bar.ibd
/var/lib/mysql/foo/bar.ibd

# rm ~mysql/foo/bar.ibd

という事を会社でしでかして解決してもらうなどしていました。

手間と迷惑をおかけしております。

トラックバック - http://d.hatena.ne.jp/hirafoo/20120118

2012-01-10

nginxのconfigでifの並記を実現する

| 21:34 | nginxのconfigでifの並記を実現するを含むブックマーク

追記 Wed Jan 11 10:53:25 JST 2012

本では「並記」じゃなくて「並置」と書いてました

nginxの本(ハイパフォーマンスHTTPサーバ Nginx入門)を読んで、なるほどと思ったメモ。

例えばapachemod_rewriteのこんなのを

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

nginxで実現しようとすると、素直にはいかない。

nginxのifは、if-elseも無いし、if andも無いし、ifのブロックの中に更にifを書けないので。

なので変数を使ってこのようにする手法が載っていた。

set $check "";

if (!-f $request_filename) {
    set $check "A";
}

if (!-d $request_filename) {
    set $check "${check}B";
}

if ($check = "AB") {
    rewrite . /index.php last
}

ifが成立したら、それぞれのifの中で変数に値を代入していって、最終的な変数の値を見る。

少々BKくさい。


本にも載っていたけど、この例ならば以下でいい。これはあくまで例示の為に載っていたのだけど、何でこんな例を選んだのだろ。

if (!-e $request_filename) {
    rewrite . /index.php last
}

そして今軽くググったら既に皆こういうことをしていたのだけどメモなので気にしない。

トラックバック - http://d.hatena.ne.jp/hirafoo/20120110

事務用品 名刺 デザイン