Hatena::ブログ(Diary)

謎言語使いの世迷事 RSSフィード

2012-02-12

[][][]Jenkinsいじってみよう

一人だと要らないんだけど、複数人で始めるとどうしても要るよね。てことでメモ。

https://wiki.jenkins-ci.org/display/JA/Jenkins

インストール方法はマジ簡単。ServletContainer で動かすか、

java -jar jenkins.jar

詳しいのは ここ

セットアップ自体はかなり一瞬。とりあえず Java コマンド実行時に出たログぺたり。

Running from: C:\xxxx\jenkins\jenkins.war
webroot: $user.home/.jenkins
2012/02/12 10:29:12 winstone.Logger logInternal
情報: Beginning extraction from war file
Jenkins home directory: C:\Users\(userDir)\.jenkins found at: $user.home/.jenkins
2012/02/12 10:29:23 winstone.Logger logInternal
情報: HTTP Listener started: port=8080
2012/02/12 10:29:23 winstone.Logger logInternal
情報: AJP13 Listener started: port=8009
....略
2012/02/12 10:29:44 org.jenkinsci.main.modules.sshd.SSHD start
情報: Started SSHD at port 49832
2012/02/12 10:29:44 jenkins.InitReactorRunner$1 onAttained
情報: Completed initialization
2012/02/12 10:29:44 hudson.TcpSlaveAgentListener <init>
情報: JNLP slave agent listener started on TCP port 49833
2012/02/12 10:29:54 hudson.WebAppMain$2 run
情報: Jenkins is fully up and running

基本動作は、ユーザディレクトリで行われ、アクセスは 8080 ポートでできるらしい。

続きを読む

2012-01-31

[]流石にこれは

ソコまで右なコト言いたい訳でもないし、左に肩入れする気も無いケド、さすがにこれはダメだろう。

http://sankei.jp.msn.com/politics/news/120130/stt12013016310005-n1.htm

そもそもが歴史の証左すら完全ではなく、国の代表の学者で議論しても感情で押し切り、まともな議論さえできていない時点で、正しい認識には至ってない。にも関わらず、元国の首相が認めちゃうのはその時点で間違ってる。

歴史認識問題の克服」は、正しく客観的な証左を経て議論すべき問題であって、決して一方的な歩み寄りで解決すべき問題ではないはずだ。

太平洋を分割管理しようとかわけわからんコト言って、国益になるなら常識までかなぐり捨てる国に、変に譲歩しようものなら大変なことになる。

http://mamoretaiwan.blog100.fc2.com/blog-entry-319.html

南シナ海まで「我々の経済水域だ!」とか意味不明なコト言って戦争になりそうな位我利我利の亡者に、尖閣諸島近辺で譲歩なんぞしたら、芋づるで色々主張するのは目に見えてるでしょ。

http://www.yawaran.net/playground/southchinasea.shtml

http://news.livedoor.com/article/detail/5636027/

これからの日本に、良い意味でも悪い意味でも大きな影響があるのは間違いない。世界経済は事実上中国を中心にしつつある。

経済的に取り残され、中国の一声で村八分になる前に、中国に少しでも取り入っておきたい政治の意図は解らなくないが、中国がそのジャイアニズムを振りかざす内は譲歩しても良いように使い捨てられるだけですぞ。

2012-01-20

[][][]Play Framework2.0 いじってみる。

https://github.com/playframework/Play20/wiki

このへんのチュートリアルに沿ってインストールはできると。

SBT ベースになってるので、そのままいけるかなーと思ったけど、コレが案外ハマった。

まず、SBT-Idea突っ込もうとして、「project/plugins.sbt」に

resolvers ++= Seq(
    DefaultMavenRepository,
    Resolver.url("Play", url("http://download.playframework.org/ivy-releases/"))(Resolver.ivyStylePatterns),
    "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/",
    "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"
)

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "0.11.0")

libraryDependencies ++= Seq("play" %% "play" % "2.0-beta")

としたまでは良かった。

問題は、依存ライブラリの設定だった。

ここで libraryDependencies にいくら設定しても入らない謎現象に悩まされた。というか、書くと本来取って欲しいURLとは違うURL参照して、依存を解決できないとかビルドエラーを起こす。

結果から言うと、「project/Build.scala」に書くのが正しいらしく、

    val appDependencies = Seq(
      // Add your project dependencies here,
      "postgresql" % "postgresql" % "9.0-801.jdbc4",
      "org.squeryl" %% "squeryl" % "0.9.5-RC1"
    )

と書いて何とか入った。SBTの仕様なのか、、、、よくわからん。

後、使い慣れた squeryl 使いたい。

極論言ってしまえば、java.sql.Connection インスタンスさえ引っこ抜ければSquerylでも全く問題なく使える。 http://www.7sudos.com/blog/scalatra-mysql-and-star-wars-droids

PlayFramework2.0 のデフォルトDBライブラリscalaquery で、「play.api.db.DB」で設定の読み込み→コネクションの取得までやっている。

https://github.com/playframework/Play20/tree/master/framework/src/play/src/main/scala/play/api/db

でソースを眺めると、DB.getConnection で拾ってこれそう。

なので、Squeryl 的にはコネクションプールから拾ってくる感覚でコレ呼べばいいのかなってコトで、

package models

import play.api.db.DB
import play.api.Play.current
import org.squeryl.{Session => SqSession}
import org.squeryl.SessionFactory
import org.squeryl.adapters.PostgreSqlAdapter

trait DatabaseInitializer {
  def initDatabase = {
    SessionFactory.concreteFactory = Some(() => connection)

    def connection = {
      SqSession.create(DB.getConnection(autocommit = false), new PostgreSqlAdapter)
    }
  }
}

trait ConnectionSupport {
  def withConnection[T](f: => T):T = {
    val session = SqSession.currentSession
    session.bindToCurrentThread
    try {
      f
    } finally {
      session.close
      session.unbindFromCurrentThread
    }
  }
}

アダプタのインスタンスは設定引っこ抜いて作れば動的にできる(と思う)けど、今作ってるクランサイトは Postgresql オンリーなのでコレでいいやと放置。

なにげに「import play.api.Play.current」忘れると動かないので注意が必要。

てーか initDatabase はコントローラオブジェクトで必ず呼ぶんだから、Controller 継承して $init$ でやっとけって話かもしれない。

2011-11-23

[]クランサイトが気に入らないので作り直し

UIもそうだけど、プロジェクトのディレクトリ構造とかも気に入らない。

ので作り直し開始。

作り直しの為に sbt 最新版に up して jQuery Mobile ダウンロードインスコ

テーブル定義と中のデータは幸い間違ってるとは思ってないので、同じ構成のままいける。

今日中にどこまでいけるんかねぇ、、、、

結構UIデザイン困ってるんだよねぇ。かっこ良さとかかる時間は比例するからなー。

[][]sbt0.11 使ってみる

とりあえず作業ログ。

このへんからsbt落としてきて


set SCRIPT_DIR=%~dp0
java -Xmx512M -jar "%SCRIPT_DIR%sbt-launch.jar" %*

こんなバッチ書(abt.bat)く。

次にプロジェクトディレクトリ作って、そこで sbt.bat 起動。

プロジェクトディレクトリルートに build.sbt ファイル作って以下のように編集。

name := "clan-rex.org"

version := "1.0"

scalaVersion := "2.9.1"

改行重要、超重要。

そしたら sbt console にて以下のコマンド叩く。

reload
||

で、設定読み込んでデフォルトブロジェクトとして認識し、project ディレクトリがルートに転がる。
そこに、build.sbt 突っ込んで、依存ライブラリを書けると。

とりあえず、intelliJ 使えんと困るので、

>||
resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "0.11.0")

でほげっと reload 多分これルートで無くても良かった気がしないではないけどまあいい。

して、web 開発の準備。

project/plugins.sbt 作って、以下のラインを突っ込む。

resolvers += "Web plugin repo" at "http://siasia.github.com/maven2"

libraryDependencies <+= sbtVersion(v => "com.github.siasia" %% "xsbt-web-plugin" % (v+"-0.2.9"))

そしたらルートの build.sbt 開いて更新。

seq(webSettings :_*)

name := "clan-rex.org"

version := "1.0"

scalaVersion := "2.9.1"

libraryDependencies ++= Seq(
  "org.eclipse.jetty" % "jetty-webapp" % "8.0.1.v20110908" % "container",
  "javax.servlet" % "servlet-api" % "2.5" % "provided"
)

reload できればおk

2011-11-04

[]写経

http://kuranuki.sonicgarden.jp/2011/11/post-54.html

何かなぁ、、、、写経ってのは極力仕事以外でやるべきかな。

仕事でやってしまうと、そのコードがいいか悪いかに関わらず、動いた時点で修正にストップをかけられてしまうのが常。

そういう意味では、写経は自分で作る時の勉強と割りきって、個人の勉強でやるべきこと。

後、写経するなら、元が良くないと頭の中が変な補正かかっちゃうので諸刃。

ということを踏まえて、写経は道具(API)の使い方とか、デザインパターンの様な応用効かせてナンボの設計思想・方針でやるべきこと。

決して言語仕様とか入門者がやるべきコトじゃないんだと思うな。

ああ、後、大学時代、写経したやつで理解してた奴を僕は見たことがない+教科書写経して書いたJavaプログラム(パズルゲー)で何かを得たコトは全くなかった気がするよ。

経験則で申し訳ないけど、プログラム書ける奴は大体、数学証明問題とかじっくり考えるのが好きな奴(ないし出来るやつ)が多い気がする。「欲しい結果を得るために、どんな手順を踏めばいけるか」数字と式を組み合わせていく点ではノリは一緒。

慣れてくると、設計でとことん分離・分解して、問題を単純化していくんだが、、、、。