2012-02-12
■[Tips][OSS][Java]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
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
■[日記][scala][Play]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デザイン困ってるんだよねぇ。かっこ良さとかかる時間は比例するからなー。
■[sbt][scala]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のプログラム(パズルゲー)で何かを得たコトは全くなかった気がするよ。
経験則で申し訳ないけど、プログラム書ける奴は大体、数学の証明問題とかじっくり考えるのが好きな奴(ないし出来るやつ)が多い気がする。「欲しい結果を得るために、どんな手順を踏めばいけるか」数字と式を組み合わせていく点ではノリは一緒。
慣れてくると、設計でとことん分離・分解して、問題を単純化していくんだが、、、、。
