Hatena::ブログ(Diary)

WeBLoG

2014-03-01 (Sat)

nex5からrx10へ

2013-10-28 (Mon)

けなくの中堅プログラマが読むべき本10冊

07:51 |

ここで中級者とは、仕事でもプライベートでも構いませんが、日常的にプログラムを書き続けて、5~10年であることとします。

ただプログラムを書くのでは無く、より良い書き方の追求、より良い開発環境の構築(スクリプトCI等)、

他の言語の習得、使っているツールのソースリーディング

これらを続けての5〜10年とします。

初心者の方はこちらへ

けなくのプログラマが読むべき本10冊 - WeBLoG

http://d.hatena.ne.jp/kennak/20070509/1178766259

また、CIやらないといけないのは解っているけど、一人じゃできないとか、

忙しいからできない等の言い訳も初心者とします。

本題、開発を続けて年数が経つと全体がなんとなく見えてきます。

開発しながら、自分の環境、言語、プログラムを改善し続けてきて、更に見えてくること。

改善するのは開発だけではいけないという事実。

という訳で、前回の初心者向けではプログラムを書くことを、書けることに主眼

を置いていましたが、

今回は開発に目を向けて関連する本を前半後半に分けて。

まずは前半。

とりあえず上記5冊。

全て読み終えたときに開発全体の未来が見えるはず。

さて、次は後半。

前半は開発、では後半はというと、

言語について、です。

良いプログラマは言葉を大切にします。

例えば、なぜforよりeachの方が良いのか。

この意味が解る人、解らない人、ピンと来た人は以下を、

上から順に読んで行くことに意味があります。

ウィトゲンシュタイン『論理哲学論考』を読む (ちくま学芸文庫)

ウィトゲンシュタイン『論理哲学論考』を読む (ちくま学芸文庫)

言語都市 (新★ハヤカワ・SF・シリーズ)

言語都市 (新★ハヤカワ・SF・シリーズ)

語りえぬものを語る

語りえぬものを語る

あ、一冊足りないや。

最後の一冊はあなたの心の中にあります。

この仕事を始めた頃に読んだあの本。

読み返すと新たな発見があるかもしれません。

2013-05-26 (Sun)

VMWare EsxiとJenkinsとGradleでインフラのコード化&CI

18:30 |

要件は

  • 作業のログは永遠に残す必要がある
  • いつ、誰が、どういった理由でインフラを変更したかわかるようにする

ひとつ、落とすと

  • インフラをコードで書けるようにする
  • 開発、本番共にVMWareで構成された基盤なのでVMWareの仮想マシンが作れるコードを書く
  • インフラコードをバージョン管理し、変更毎に構築できるかテストする
  • コードで構築されたインフラでアプリケーションの全てのテストが通るか確認する(インフラの要件は設定ファイルがあるかどうかではなく、アプリケーションが動作するかどうか)
  • テストは既に動作しているCIがあるので、それを使い回す
  • ログの保持もJenkinsにしてもらおう

やること



インフラ定義Gradleファイル


applyEx {
  plugins 'java_ext',
          'sh',
          'tomcat_ext',
          'vm',
          'mkdir',
          'proxy_auth'
  files   'common/yum_update.gradle',
          'common/set_ntp.gradle',
          'common/install_httpd.gradle',
          'common/install_ssh.gradle',
          'common/set_secretkey.gradle'
}

vCenter {
  url = 'http://xxx.xxx.xxx.xxx/sdk'
  user = 'root'
  passwd 'JM*rtTS**MfJgDt**CXXZ*4gNiyB***jssVS'
}

vm {
  description = 'テスト用アプリケーションサーバ'
  name = 'testap'

  registry {
    center = 'vCenter'
    datastore = 'test'
    host = 'test_cluster'
  }

  cpu {
    core = 4
    socket = 1
  }
  memory {
    sizeGB = 8
  }
  hdd {
    sizeGB = 128
    type = 'thin'
  }

  iso {
    file = 'iso/CentOS-6.4-x86_64-netinstall.iso'
    datastore = 'test'
  }

  network {
    name = 'VM Network'
    ip = '192.168.**.**'
    openPorts = ['http', '5900:tcp', '8080:tcp', '8081:tcp']
    gateway = '192.168.**.**'
  }
  passwd 'JM*rtTS**MfJgDt**CXXZ*4gNiyB***jssVS'
}

dir {
  root {
    var {
      log {
        testApp(perm:755)
      }
    }
  }
}

java {
  version = '7u21'
}

tomcat {
  version = '7.0.40'

  option = ['-Dfile.encoding=UTF-8',
            '-Dcatalina.logbase=/var/log/tomcat',
            '-Dnet.sf.ehcache.skipUpdateCheck=true',
            '-XX:-UseSplitVerifier',
            '-XX:+DoEscapeAnalysis',
            '-XX:+CMSClassUnloadingEnabled',
            '-XX:+UseParNewGC',
            '-XX:+UseConcMarkSweepGC',
            '-XX:PermSize=128m -XX:MaxPermSize=256m',
            '-Xms256m -Xmx512m',
            '-server']
}

システムの設定 << {
  os.insert('/etc/sysctl.conf'.asType(File), 'vm.swappiness = 30')
  os.execute('sysctl -p')
}

//固有設定を追加
Httpdのインストール << {
  '/etc/httpd/conf/httpd.conf'.asType(File).with {
    write text.replaceAll('#ServerName www.example.com:80',"ServerName ${vm.name}:80")
    write text.replaceAll('Options Indexes FollowSymLinks','Options FollowSymLinks')
    println path
    println text
  }

  '/etc/httpd/conf.modules.d/01-mpm.conf'.asType(File).with {
    write '''# event MPM
            |# StartServers: initial number of server processes to start
            |# MinSpareThreads: minimum number of worker threads which are kept spare
            |# MaxSpareThreads: maximum number of worker threads which are kept spare
            |# ThreadsPerChild: constant number of worker threads in each server process
            |# MaxRequestWorkers: maximum number of worker threads
            |# MaxConnectionsPerChild: maximum number of connections a server process serves
            |#                         before terminating
            |<IfModule mpm_event_module>
            |    StartServers             2
            |    MinSpareThreads         25
            |    MaxSpareThreads         75
            |    ThreadsPerChild         25
            |    MaxRequestWorkers      150
            |    MaxConnectionsPerChild   0
            |</IfModule>'''.stripMargin()
    println path
    println text
  }
}

task installModJk << {
  os.installRPM('http://repo/repos/CentOS/6/x86_64/', 'mod_jk-1.2.37-1.x86_64.rpm')
  new File('/etc/httpd/conf.modules.d/00-mod_jk.conf').with {
  new File('/etc/httpd/conf.modules.d/workers.properties').with {
    write '''worker.list=ajp13
            |worker.ajp13.port=8009
            |worker.ajp13.host=localhost
            |worker.ajp13.type=ajp13'''.stripMargin()
  }
  def conf = '/etc/httpd/conf.modules.d/00-proxy.conf'.asType(File)
  conf.write(conf.text.replaceAll('^LoadModule proxy_ajp_module','#LoadModule proxy_ajp_module'))
}

秘密鍵の設定 {
  host = 'serverA'
  user = 'root'
  password = '1to*oCY*et06axq*9TahD***QvRxu**/n8e'
}

defaultTasks (
  'システムの更新',
  'VMWareToolsのインストール',
  'VMWareToolsの更新',
  'mkdir',
  'Javaの設定',
  'Ntpの設定',
  'Httpdのインストール',
  'Tomcatのインストール',
  'modJkのインストール',
  'システムの設定',
  '秘密鍵の設定',
  '再起動'
)

このコードを実行すると仮想マシンが作成されるので、

その後、Jenkins上のスクリプトでノードに追加し、ミドルウェアの設定を実行するジョブを後続として流す。

ミドルの変更前にスナップショットが取られるので、テストがうまくいったら削除する(ここはまだ自動化してない)。

見えてない部分のコードでは泥臭くyum installとかwgetとかやっていて、VMの作成はvijavaを使用している。

ミドルウェアの設定ジョブが終わったら、テストジョブを後続として流して、インフラのCI環境の完成。

次にやりたいのは設定や、ミドルウェアをマトリクスで一斉にパフォーマンステストして・・・みたいなことをやりたい。

2011-11-25 (Fri)

忙しいプログラマ、SEが購読すべきニュース系RSS

11:56 |

地下鉄でさっとRSSを読みたい。

Google Readerで全文ボタンなんてかったるくて押していられない。

けどニュースは読みたい。

そんな人向けのRSS

年末に向けてRSSを整理したのでついでに公開してみる。

ニュースサイトはタイトルのRSS自体出してない所もあり、対策として全文サービス等をメタメタに使用しているのでRSSのURLが面白いことになっているが気にしない。

少し前まで、まるごとRSSだけで完結してたんだけど、テキスト以外のいいねボタンとかも入ってくるのが嫌なので、他の全文サービスに一部切り替えて使用。

iPhoneではreederが良い。


InfoQ.com Japan

http://mrss.dokoda.jp/a/http/www.infoq.com/jp/rss/rss.action?token=yiTZl4Djkwx6iiLiBnhGQtG8FGpuvKT5

News Spiral

http://mrss.dokoda.jp/a/http/www.the-journal.jp/contents/newsspiral/atom.xml

Newsweek コラム&ブログ

http://mrss.dokoda.jp/a/http/newsweekjapan.jp/column/rss.xml

Publickey

http://fulltextrssfeed.com/www.publickey1.jp/atom.xml

Reuters: トップニュース

http://mrss.dokoda.jp/a/http/feeds.reuters.com/reuters/JPTopNews

SourceForge.JP Magazine

http://mrss.dokoda.jp/a/http/rss.rssad.jp/rss/sourceforge/magazine/rss

The Daily WTF

http://syndication.thedailywtf.com/TheDailyWtf

WIRED VISION

http://www.wizardrss.com/feed/feed.rssad.jp/rss/wired/feed.rdf

「文藝春秋」最新記事一覧 - 文春.jp

http://mrss.dokoda.jp/a/http/bunshun.jp/bungeishunju/bungeishunju.xml

エンタメ スクープ

http://mrss.dokoda.jp/a/http/entameblog.seesaa.net/index.rdf

スラッシュドット・ジャパン

http://rss.rssad.jp/rss/slashdot/slashdot.rss

セキュリティ、個人情報の最新ニュース

http://mrss.dokoda.jp/a/http/b.hatena.ne.jp/entrylist?sort=hot&threshold=1&url=http://www.security-next.com/&mode=rss

ナショナルジオグラフィック ニュース

http://mrss.dokoda.jp/a/http/www.nationalgeographic.co.jp/news/rss.php

ニッセイ基礎研究所 新着情報一覧

http://mrss.dokoda.jp/a/http/www.nli-research.co.jp/rss/index.rdf

リコールナビ

http://mrss.dokoda.jp/a/http/recall-navi.com/modules/whatsnew/atom.php

世界の三面記事・オモロイド

http://mrss.dokoda.jp/a/http/omoroid.blog103.fc2.com/?xml

主要ニュース 東京新聞

http://mrss.dokoda.jp/a/http/www.zou3.net/php/rss/tokyo2rss.php?cat=main

国際ニュース - CNN.co.jp

http://mrss.dokoda.jp/a/http/feeds.cnn.co.jp/rss/cnn/cnn.rdf

地震情報 - goo 天気

http://weather.goo.ne.jp/earthquake/index.rdf

日本経済新聞 すべて

http://fulltextrssfeed.com/www.zou3.net/php/rss/nikkei2rss.php?head=main

暗いニュースリンク

http://mrss.dokoda.jp/a/http/hiddennews.cocolog-nifty.com/gloomynews/atom.xml

NEWS WEEK最新記事

http://mrss.dokoda.jp/a/http/newsweekjapan.jp/story/rss.xml

海外経済全般:経済レポート一覧

http://www3.keizaireport.com/rss/node_52.xml

科学ニュースあらかると

http://mrss.dokoda.jp/a/http/www.mypress.jp/v2_writers/beep/cache/rss.rdf

読売新聞医療介護・健康情報サイト「yomiDr.(ヨミドクター)」

http://mrss.dokoda.jp/a/http/rss.rssad.jp/rss/yomidr/rss00-news

ジョナサン・ケイナー - 今週の射手座

http://www.wizardrss.com/feed/www.cainer.com/japan/weekly/sagittarius.html

rin51rin51 2011/11/27 14:57 4つか5つくらいかと思ってたら多すぎワロタ....

2011-08-18 (Thu)

firefoxでgoogleキャッシュが見れない

07:53 |

突然、firefoxでgoogleキャッシュを見ようとすると、

squid The request or reply is too large」とか出るようになった。

ieだと大丈夫だったのでsquidのせいではない。

キャッシュ増やしても対処はできるだろうけど。

firefox>オプション>履歴の詳細設定から

webcache.googleusercontent.com

のクッキーを全て削除して、クッキーの例外に追加したら治った。

2011-08-07 (Sun)

赤子4ヶ月

21:20 |

赤子はミルクの香りがかわいいと思っていたら首の付け根辺りからチーズ臭が…!…恐ろしい子

そっこーシャワーぶっかけました。


DSC01041

週末写真

21:50 |

風を待つ

_DSC01122



知らせる鈴

_DSC01084



_DSC01057

_DSC01059

_DSC01063

_DSC01125

nexに追加されたピクチャーエフェクトで試し撮り。


_DSC01151



_DSC01153

2011-06-13 (Mon)

赤子2ヶ月

21:23 |

Before

_CIMG2678

After

_DSC00700

週末写真

21:23 |

_DSC00840

_DSC00846

_DSC00850

_DSC00845

海や水とHDRはむつかしかった。

2011-06-11 (Sat)

心とは何か -「物を見る」ということを巡って- 野矢茂樹

00:26 |

5/11 意識と実在の二元論を批判する

intro
  • 心は他者と共有できていない(自我、他我)。世界は共有している(公共)。
  • 「心とは何か」と「他者とは何か」はリンクしている。
  • 第一歩として、「知覚」…メインは「視覚」。これを知覚像とする。
  • 「在る事」と「見えている事」(見えている事は十人十色
  • よくある人と物とフキダシの絵。
意識と実在の二元論を批判する

上記に関して、3つの視点が考えられる。

素朴実在論、意識と実在の二元論、意識の一元論。

  • 〜破兌尊瀟澄帖文誤ると?)
    • 正しく見えている場合は実在を見ている。
    • 見誤った場合には知覚像を見ている。
    • まぶたを押して物が二重に見えるとき、実物はふたつに増えてはいない。

  →ご都合主義…は嫌だなぁ。論理的に素直に考えると意識と実在の二元論となっていく。

  • 意識と実在の二元論
    • 正しい…実物と一致している。
    • 誤り…実物と一致していない。

 →実物と一致しているということを証明できない。

 →一致しているということ自体を知覚を通さねばならない。

 →なので、「懐疑論」…実物と知覚像は実は全然違うものなのでは?

 →実物と知覚像の間に、空間的、時間的な距離はない。

  →世界全てがフキダシの中に入ってしまうことになる。

  →時間という概念を加味して考えると、見ている人は死んでいて、知覚像だけ受けているかもしれない。

  →過去も未来もなく、実在と知覚像のあいだに因果関係を付けることができない。

  • カントの二元論
    • 世界…時間、空間の現象の世界
    • 知覚像の原因は物。しかし、物自体を認識することはできない。

  →物自体を考えても仕方ない。現象の世界に住んでいるのだから、現象のみを考える。

  • 現象は心ではない。
    • 現象の中に実物、見誤り、知覚、(素粒子)がある。
  • 素粒子には色も味もない。
    • 素粒子りんごは知覚した時に色を得ることができる。
    • 素粒子は世界のひとつの語り方(知覚とは別の体系)
  • 自分たちはどのように世界を認識しているのか。
  • 見ている物は実物ですか?知覚像ですか?と聞かれれば、実物ですねとなる。
  • 0媼韻琉豸杵
    • 知覚と実物は一致しているので、物自体を考える必要はない。

 →我々は実物に出会うことはない。

  →知覚された実物は知覚像。

   →我々は知覚像の中に生きている。

  • 科学にとって知覚は必要か?

  →素粒子の世界において、人間の知覚は必要ない。

  →人間とは異なる知覚システムを持つ生物だけになれば、夕焼けは赤くならない。

  →多数派の知覚の一致を元に世界は彩られる。

   →知覚の正しさが科学を支えている。

  • 素粒子論に知覚は必要ないが、素粒子論の正しさは知覚が支えている。

   →この因果関係の逆転は在り得ない。

  • Augment from Illursion 幻覚論法
    • まぶたを押した状態で見える物は実物とは違う。

  →非常に強い論法

  →これにより、二元論は無力化。

   →初めに知覚像在りき…しかし、全てが知覚像というのは実感と異なる気がする。

    →そもそも、知覚なんてしてないんじゃないか?


5/25 意識の一元論

  • 実物のある世界が実在世界。
  • 知覚像の世界は知覚世界…時間・空間がない。

 →ふたつの世界に時間・空間の関係はない。

  →因果関係を結べない。

   →実物を見ているとは言えない。

    →意識の一元論へ

  • いま、時計を見ているが、時計の実在には届いてないような気がする。

  →二元論的不安

  • 誰も見ていない場合は?→神が見ている(バークレー)

  →…僕は神を信じていないのでこれはちょっとね…

  • 一元論は見誤りに強い。

 →実在物も見誤りも知覚

    • 見え方の安定性による非対称性。

 →断片化して孤立するものが見誤り。

 →遠くに蛇が居るとして、一歩近づくごとに蛇と縄が交互に見えたら区別することはできない。

  →安定していない。

  →続きものの夢の場合は?…第2の現実

  →現実も孤立し、断片になるとこれはもう狂気の世界。

   →孤立した断片において、生きていけない。

  • 二元論は対応説、一元論は整合説

 →consistent(無矛盾)

 →coherent(秩序のある)

  • 意識の中に内在する(私の中)
  • 意識の超越を許容しない。

 →意識の世界は私の意識だけ。他人に意識はない(独我論

  →哲学的ゾンビ

  →私以外の人間は意識のある振りをしているだけ。

   →え?ゾンビじゃないって?ゾンビはみんなそう言うんだよ。

   →では、独我論者が生命保険に入るのはどういうことか?

    →ゾンビ(女房)がうるさいから、黙ってもらうために入った。

   →独我論者は言語を使用、習得することができるのか?正しく行使することの意味は?

  • 知覚像なんて無いと言いたい。

 →見ているものは常に実物。

  →意識のスクリーンに写したイメージというものはない。

  →知覚で実在世界にアクセスしている。

  →公共の世界に大勢の人が同時にアクセスしている。

  • 知覚像の拒否

 →見誤りはどうなる?

 無くなる?

2011-06-09 (Thu)

アイラストームとかいう蒸留所不詳のシングルモルトがあったので購入

アイラ好きとしては…と思ったけど味は値段相応。カスクもあるらしいので見掛けたら飲んでみたい。

味は柔らかくてクリーミー。ガリガリ感は少なくそよ風みたいな炭の香り。

ストレート、加水、ロックで試す…

中間の味が複雑というか色々混じっててぼやけてる…?

どこのだかわかりにくい…が、ラフロイグボウモアカリラじゃないよな…

あと何があったっけ…?

youichiyouichi 2011/06/10 00:13 あ〜どべっく、らがぶ〜りん...ぶるいっくらでぃとかもだっけ? ぽ〜とえれんだと高そう。
フェイントでぶなは〜ぶんなんて可能性も...
これからの季節はソーダ割りおすすめかもです。
あと酒の神様に怒られるの覚悟でピートなモルトをスプライトで割ると結構いけます...

kennakkennak 2011/06/11 00:22 割るのは勿体ないー><
加水とロックは酒を柔らかくして味をみたかったのです。
結局わかりませんでしたが…
飲みやすい部類のアイラ…うーん…
さすがにポートエレンはありえないかと…Ardbegも違うような…
ラガブーリンは飲んだことがないです…どっかで飲んでみるか…

kennakkennak 2011/06/11 00:32 ポートエレンも飲んだことないです。