だるろぐ

だるいぶろぐです

vimが重い件の詳細のメモのようなもの

  • 重い環境、軽い環境ともos、vimのバージョンなどは同じ
  • centos5.*
  • vim 7.3
  • configure
--prefix=/usr/local/vim \
--enable-multibyte \
--enable-rubyinterp \
--enable-gpm \
--enable-cscope \
--with-features=huge \
--enable-fontset \
--disable-gui \
--without-x \
--disable-xim \
--enable-pythoninterp \
--enable-perlinterp
git clone git://github.com/hirafoo/dotfiles.git
cd dotfiles
./dotsetup.sh
git submodule update --init
vi
 :BundleInstall
  • filetypeがrubyなファイルを開く時点で重い
    • vim hoge.rb」と打ってからvimが開くまで長い
      • 1秒くらい待つ
      • 新規ファイルを開くのも重い
      • 新規ファイル・既存ファイルどちらを開くときも待つ時間は変わらない
    • 文字列を入力するだけで重い
      • 補完をしなくても重い
    • カーソル移動・/による検索は別に重くない
    • が、c-f/c-bで移動すると、やや引っかかる感じがする
  • 最初はacp.vimを削除してみたら軽くなったかもと思ったけど、勘違いレベルだった
  • ~/.vim 丸ごと削除しても重い
  • vim周りが同じ環境でも軽かったりする
  • ディストリビューションvimの設定・configure・dotfiles全部同じでも、ruby・gemを入れていないサーバでは軽かったりする。が、重かったりもする
    • gemが沢山入っていても関係ない?
    • let g:ruby_path = "" しても効果が無いのはどこでも同じ

vimでrubyのコードを編集するとき重かったら let g:ruby_path = "" とgem入れすぎとかを疑うとか後色々

いつからか分からないがvimrubyのコードを編集しようとすると異常に重くなっていた。
最初はこんな重くなかったんだけど気が付けばマジでコードを書くのに支障が出るくらい重くて重くて。
しかし原因がさっぱり分からないし調べられるほどvim力が強くないので致し方なく耐える日々が続いていたのだけど、ふとtwitterでぼやいてみたら、あることを教えていただいた。ありがとうございます。



全然知らなかった。
というわけでまずは .vimrc に let g:ruby_path = "" を追記すべし。
.vim/bundle とか plugin とかいじったりしたら軽くなったりするので、僕の環境ではプラグインが原因なのかなあと思いつつ。


周囲の人に聞いてみたら、同じようにvimrubyファイル開いたら重いわーって人が一人居たのだけど、これマイナーな問題なのか普通の人は出くわさないのか分からない。そしてその人からは「rubyの補完がそもそも重い」とか聞いた。
vim ruby 重い」でググっても全然同様の症状に悩んでる人が見つけられないのだけど、マイナーなのだろうか。emacsとかだと関係ないのかな?
あとgem 121個って最初は入れ過ぎかなーと思ったけど比較対象が無いのでこれも分からないけどまあいいか。
むしろモジュール入れ過ぎると重くなるのはそっちを何とかして欲しいきも。Moose入れたらvimperlのコード書くとき重くなりました!とか笑えんし。

エゴサーチ

という言葉をこないだ覚えた。

やってみた。

yahooオークションにハンドル被ってる人が居ることに今更気づいた。

別人です。

 

目に付くサービス全て取得とかしてないのでそらまあ有りえるのだけど。

地味に驚いた。

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

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だ

雑感

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

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


飽きたので中断するけどこんな感じで出来ることはほんの一握りで、出来ない事のほうが圧倒的に多い。
出来ない事はもっともっとある。あれもこれも出来ないし知らない。一人ではほぼ何も出来ない。
というか一人で何でも出来る人なんてめったに居ない。居たらそいつ一人で会社起こして事業してればいい。そしてそれはとても難しい。
だから先のエントリのように会社に属して集団で仕事するんだよねー


というのを理解した上でそれでもぶん投げたい日々もある。だって(自粛)
あー元々こういう下らない事を書いていたんだったブログでは。

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

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

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

まず、仕事があって当然ではない。
会社は賃金を払って俺を雇っている。自分は働いたら賃金をもらえる。
「働いたら金をもらえる」というのはごく当たり前のことだと思っていた。
が。
「金を得る」のは簡単でも、「金を産む」のはとても大変だ。
勝手に無から金が生まれるわけはない。自分が身一つで金を生み出すとなると、会社を作るにしても、設立、資金、労力の確保、時間、そもそも設けるための仕組みの考案、調査など、色々なものが必要になり、また成功しなかったら、というリスクまで背負う。言うまでも無くそれは大変なことだ。
会社というのはそれら全てが既に終わっている。また、会社が倒産したとしても、自分にリスクは一切無い。次の会社を探せばいいだけである。
自分はノーリスクで、「働けば金を得られる」という仕組みに参加させてもらっている。
また会社はお金を儲けなければならない。が、自分はそれに貢献できないかもしれない。というか新入社員が即お金を儲けられるかというとそんなわけはない。
しばらく会社は新人を育てなければならない。使い物になり、お金を稼ぐだけの能力を身に付けるまで。
その間こちらは会社から金をもらいながら自分の能力を育て、勉強することになる。させてもらえることになる。


基本的に日本の会社ってのは一度雇用されたら相当の事をしない限りクビにはならないようにできている。その辺の決まり事は労働者が知ることができる。雇用契約書とかで。
海外は雇用主の気分一つで労働者の首があっさり飛ぶ。海外は夢の楽園じゃない。


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

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

相手の発言の背景を考えること。どんな場面においても。
例えば政治を例に挙げて。
国民が政治家を馬鹿だ無能だと言うのは簡単だが、頭の出来で言えば、確実に政治家の方が上。
こちらは政治を行うにあたって何が必要か、どんな能力が必要とされて、何をどうすりゃいいか全く知らないし分からない。
あと政治家を選んだのは国民。自分で選んどいてその結果当選した政治家を罵倒って、おいおいその罵倒相手を選んだのはお前自身じゃねえかと。
あれこれ文句言うならば、お前が政治家になって同じだけの能力を身に付けて、背景・事情を把握した上でやれと。


例えばこう言われたとする。
プログラマって楽な仕事よねー、一日中エアコンの効いた部屋で座りながら好きなパソコンいじりしてりゃいいんだから」
そうしたら、きっと
「おいおい何馬鹿言ってやがる、こっちの現場見たことも、やったこともないくせに」
と憤るだろう。
先の例で、政治家に文句言うだけなら楽だろ、というのはこういうことだと。
実際の現場も全然分かっちゃいない奴がこんな事言ってきたら、言った相手は馬鹿だとみなされる。
そして、底が浅い奴だと。
簡単にそんな発言が出来る奴は、間違いなく、確実に考えも知識も足りない。むしろ、無い。
というように、何も考えもせず安易に批判を言うと、自分の馬鹿さ、無能さ、無知さ、つまり底の浅さを露呈することになる。
まず、何か言う前にちゃんと考えろと。
先の例で言うと、政治家がどんだけ馬鹿な判断を下そうと、そこには自分の知らない考え・事情・背景があったはず。
素人の自分が、何も分からず考えず安易に無能だと批判すんじゃねえと。


これは当然どんな場でも同じで。
職場で、どんな提案をされたとしても、真っ先に否定・批判するんじゃなくて、何故相手がそういうことを言ってきたか考えること。
言う側は自分よりもユーザに近く、何が求められているかを知っている。経験もある。
そんな相手が言ってきたのだから、確かにそこには何かしらの根拠がある。
また、


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

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


とかいう現場があったとして。ちなみにこれは「アホでマヌケなプログラミング」という本に載っていた文章をベースにした。これって引用で罰せられたりすんのかなまあいいや許して。「営業と開発は分かり合えないものなんですか?」とかいう場面で「世の中こんなもんですよ」ってな感じで載っていた気がする。
で。
これも、相手がどんな立場で、何を考えてその行動に至ったか、を考えるということがゴッソリ抜け落ちている。
自分からしたらどれだけずれていようが、まずそこを考えるのが大事。


なので。例えば。

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

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

とか言われたとして。

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

とか冷静に いやうん、やめよう。
ただただ俺が未熟だった。


とにかく。まず相手の背景を考えろ。分からなければ聞け。その上で判断しろ。
何も考えずに否定するのは自分の器の小ささ、底の浅さを露呈するだけだ。


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

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

言われたのが、俺は上から目線だということ。
俺は社会に出て、周囲を見て、自分がどれだけ馬鹿で、周りの人が普通に出来ることすら出来ない、そんな駄目な奴だというのを分かったつもりでいる。
それでも、まだ上から目線でものを言っている。自分はお前らより賢いと思っている。
と指摘された。
先に挙げた話にも通じるけれど。
相手は自分が思うより賢く、自分は思ってる以上に馬鹿であると分かれ。
自分は賢いなんて思ってたら、恥かいて終わる。

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

例えば、ブスが「私ってブスよねー」と言ってて、それに対して「いやそんな事無いよ」って言ったとしてさ?
そこでブスが「えっ、私ってもしかして可愛いんじゃね」とか思うのはおかしいだろ?どんだけポジティブなのよ、って話。
お前はそういう考えなのよ

と言われた。
要は相手が言ったことを鵜呑みにするとか、ましてやプラスに捉えるとかどんだけお前は幸せな頭してんだ馬鹿野郎と。
「お前それじゃ行間読めないでしょ」とも。
「つまり空気読めないってことだよな?」と訊いたら、
「それは違う。そもそも空気読めってのは何つーか、**が使う言葉で…」すまん、ここ忘れた。
浅慮だったか、何だったか…何にしろ、「空気読め」ってのは使ってると頭悪いとかそういうふうに見なされる、とか、だった気がするが自信無い。
とにかく。俺は相手が言っていることを正確に理解しきれていない。自分に都合良いように解釈している。
自分なりに思うと、反省が足りないしそもそもそう考えられる頭がおかしい。


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

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

大分グロッキーにさせてしまった。
こんな駄目な俺を相手にさせてすまんかった。


俺も大分反省した。が、こいつも言っていたが、人間そう簡単に変わらない。
今までずっとそういう考えで生きてきたのが、1日・1週間・半年くらいじゃ変わらない。
でも自分が駄目なのは今まで以上に分かったし、友達に何度も世話と迷惑かけて説教してもらったので(今まで何回もある)言われた事を忘れずに、まっとうな人間目指していこう。