前回、若干AWSなどに触れていることを書きましたが、今回はJenkinsのお話。
(こうやって普段使っているものを書いていくと、だんだんバレてしまうのではないか、と思ったけどどうせ名前もバレてるんだからいいか)
Jenkinsは非常に役立っています。
Jenkinsを使うと、自動でコンパイルを行ってくれます。
Jenkins
「コンパイル?そんなのローカルPCのコマンドプロンプトやEclipse上で行えばいいじゃん」
と思っている人がいるかもしれません。
しかし大人数で開発を行っている場合、個人の設定で左右されてしまうローカルPC上でコンパイルすることはあまり良くありません。
例えば、みんな同じVersionのJDKを使っているという保証はありますか?
ライブラリのパスをローカルPC上の絶対パスで指定していませんか?
こういうことを無くすために、現在、私の部署ではJenkins&mavenを利用してコンパイルしています。
ただ、Jenkins&mavenでコンパイルすると、大量のログが出てきます。
このログをただ単にメールへ載せると、メール本文が大変なことに…!
ということで、今回はJenkinsでコンパイルエラーによるJob失敗が起こった時に、ERRORのみ記載したメールを飛ばそうというお話です。
2014年6月1日日曜日
2014年5月11日日曜日
命名規則についてのお話
先月で、新卒で入社して1年が経ちました。
自分の入った会社はルールにあまり厳しくなく、自分が考えた物事に対して、結構自由に動くことが出来ているので、楽しく仕事ができています。
ただ、自由過ぎるが故に、部署内(あるいは社内)に命名規則がないということに困っています。
困る、というよりも泣きそうです(ノД`)
皆さんの会社では、以下のようなものに関して、命名規則がありますか?
1.社員用メールアドレス
2.取引先の会社名
3.サーバの名前(AWSなどのクラウドのインスタンスの名前)
これらに関して命名規則がないと、実は管理上すごい困ります。
もしも命名規則が存在していない場合は、被害が小さい今のうちに命名規則を作るべきです。
そして、実は自分が働いている会社・部署は、上記のものの命名規則が存在していません。(もしくは後追いで作られた)
なにせ、新卒で入った初めての会社なので、他の会社はどんな感じなのか知りませんが、これらに苦労することがあったので、それぞれについて詳細を書いていきます。
(これらに関して命名規則がない方がおかしい!とかあったら教えて下さい)
自分の入った会社はルールにあまり厳しくなく、自分が考えた物事に対して、結構自由に動くことが出来ているので、楽しく仕事ができています。
ただ、自由過ぎるが故に、部署内(あるいは社内)に命名規則がないということに困っています。
困る、というよりも泣きそうです(ノД`)
皆さんの会社では、以下のようなものに関して、命名規則がありますか?
1.社員用メールアドレス
2.取引先の会社名
3.サーバの名前(AWSなどのクラウドのインスタンスの名前)
これらに関して命名規則がないと、実は管理上すごい困ります。
もしも命名規則が存在していない場合は、被害が小さい今のうちに命名規則を作るべきです。
そして、実は自分が働いている会社・部署は、上記のものの命名規則が存在していません。(もしくは後追いで作られた)
なにせ、新卒で入った初めての会社なので、他の会社はどんな感じなのか知りませんが、これらに苦労することがあったので、それぞれについて詳細を書いていきます。
(これらに関して命名規則がない方がおかしい!とかあったら教えて下さい)
2014年2月23日日曜日
String.splitで標準入力された文字列から改行コードによってStringの配列に分けるコードについて
今回はJavaについてのお話。
今回やりたかったこと
条件:入力を「◯◯\r\n△△\r\n□□」とする。
結果:以下のように表示される。
◯◯
△△
□□
考え:「\r\n」を認識して、String配列に変換できれば良いかな…?
ということで、こんなコードを作ってみます。
Wrong.java
と入力すると、
と表示されてしまい、残念ながら、文字列の分割が行われず…。
ということで「きっと『\』をエスケープしてないことが原因なんだ!」と思い、リトライ。
Wrong.java
こうすることで、きちんとエスケープされて「\r\n」と認識してくれるはず…!
と思ったけど、またしても
と表示されてしまい、失敗。
デバッグで一つ一つ見ていくと、標準入力された「\r\n」はエスケープされ
「\\r\\n」としてargs[0]に入力されるらしい。
その「\\」をそれぞれエスケープしないといけないので…
Correct.java
とすることで、きちんと、
となってくれました。
今回やりたかったこと
条件:入力を「◯◯\r\n△△\r\n□□」とする。
結果:以下のように表示される。
◯◯
△△
□□
考え:「\r\n」を認識して、String配列に変換できれば良いかな…?
ということで、こんなコードを作ってみます。
Wrong.java
class Wrong {
public static void main(String[] args) {
String[] sentence = args[0].split("\r\n")
for(int i=0;i<sentence.length;i=++){
System.out.println(i + 1 + "行目は " + sentence[i] + " です");
}
}
}
そして、これに、java Wrong 最初の行\r\n次の行\r\n最後の行
と入力すると、
1行目は 最初の行\r\n次の行\r\n最後の行 です。
と表示されてしまい、残念ながら、文字列の分割が行われず…。
ということで「きっと『\』をエスケープしてないことが原因なんだ!」と思い、リトライ。
Wrong.java
class Test {
public static void main(String[] args) {
String[] sentence = args[0].split("\\r\\n")
for(int i=0;i<sentence.length;i=++){
System.out.println(i + 1 + "行目は " + sentence[i] + " です");
}
}
}
こうすることで、きちんとエスケープされて「\r\n」と認識してくれるはず…!
と思ったけど、またしても
1行目は 最初の行\r\n次の行\r\n最後の行 です。
と表示されてしまい、失敗。
デバッグで一つ一つ見ていくと、標準入力された「\r\n」はエスケープされ
「\\r\\n」としてargs[0]に入力されるらしい。
その「\\」をそれぞれエスケープしないといけないので…
Correct.java
class Correct {
public static void main(String[] args) {
String[] sentence = args[0].split("\\\\r\\\\n")
for(int i=0;i<sentence.length;i=++){
System.out.println(i + 1 + "行目は " + sentence[i] + " です");
}
}
}
とすることで、きちんと、
1行目は 最初の行 です。 2行目は 次の行 です。 3行目は 最後の行 です。
となってくれました。
2014年2月11日火曜日
PlayFrameworkでサニタイズから逃れる方法
先日に引き続き、PlayFrameworkの話です。
PlayFrameworkを使っていて、便利だが困ることが一つ。
それは、自動的にサニタイズされてしまうという点。
例えば、
controllers/Application.java
view/main.scala.html
というコードがあったとすると、実際にmain.scala.htmlに入るautoEscapeには、
「'hoge'」ではなく、「'hoge'」が入ってしまいます。
もちろん、<html>タグの中なら勝手に判断してくれるので、別に問題はないのですが、
例えばview/main.scala.htmlの中に<script>タグを置き、その中に@autoEscapeを
持ってきて処理したい場合は、ちょっと困る。
なぜなら、<script>タグの中では上手い具合に判断してくれないから。
このような事態の回避方法を調べても、ほとんどのサイトで出てくるのは、
「.raw()を使え」という言葉ばかり。
特に、引数で持ってきた値をエスケープさせないで使う方法が書いてない!!!
ということで、辿り着いたページがココ↓
Stack Overflow - How to pass raw html to Play framework view?
そして試してみたのが以下の書き方。
このように、 @html(引数名) と書くことで、「'hoge'」という記載で通ってくれるよ!
やったね!
と思ったら、ちゃんと以前紹介したサイトにも書いてありましたorz
ちゃんと読もう、自分。
@IT - Java開発者がScalaでPlay frameworkのビューを作るには (2/3)
PlayFrameworkを使っていて、便利だが困ることが一つ。
それは、自動的にサニタイズされてしまうという点。
例えば、
controllers/Application.java
package controllers;
import play.*;
import play.mvc.*;
import views.html.*;
public class Application extends Controller {
public static Result index() {
return ok(main.render("'hoge'"));
}
}
view/main.scala.html
@(autoEscape: String)
<!DOCTYPE html>
<html>
<head>
<title>テスト</title>
</head>
<body>
@autoEscape
</body>
</html>
というコードがあったとすると、実際にmain.scala.htmlに入るautoEscapeには、
「'hoge'」ではなく、「'hoge'」が入ってしまいます。
もちろん、<html>タグの中なら勝手に判断してくれるので、別に問題はないのですが、
例えばview/main.scala.htmlの中に<script>タグを置き、その中に@autoEscapeを
持ってきて処理したい場合は、ちょっと困る。
なぜなら、<script>タグの中では上手い具合に判断してくれないから。
このような事態の回避方法を調べても、ほとんどのサイトで出てくるのは、
「.raw()を使え」という言葉ばかり。
特に、引数で持ってきた値をエスケープさせないで使う方法が書いてない!!!
ということで、辿り着いたページがココ↓
Stack Overflow - How to pass raw html to Play framework view?
そして試してみたのが以下の書き方。
@(notEscape: String)
<!DOCTYPE html>
<html>
<head>
<title>テスト</title>
</head>
<body>
@Html(notEscape)
</body>
</html>
このように、 @html(引数名) と書くことで、「'hoge'」という記載で通ってくれるよ!
やったね!
と思ったら、ちゃんと以前紹介したサイトにも書いてありましたorz
ちゃんと読もう、自分。
@IT - Java開発者がScalaでPlay frameworkのビューを作るには (2/3)
2014年2月9日日曜日
まっさらな状態からMySQLを使いつつPlayFrameworkで動かせる状態まで色々なものをダウンロードした話
タイトルの通り。
今回ダウンロードしたものは以下の通り。
・JDK
・Eclipse
・MySQL
・PlayFramework
作業時間は1日。
ただし、ソチオリンピックを見ながら。
やり方を教えるというよりも、「ここのページを参考にするといいよ~」
というリンクの紹介と、「リンク先と作業が違ったよ~」というメモ書きだけ。
今回ダウンロードしたものは以下の通り。
・JDK
・Eclipse
・MySQL
・PlayFramework
作業時間は1日。
ただし、ソチオリンピックを見ながら。
やり方を教えるというよりも、「ここのページを参考にするといいよ~」
というリンクの紹介と、「リンク先と作業が違ったよ~」というメモ書きだけ。
2014年1月4日土曜日
2012年8月13日月曜日
コミケ82の戦利品(3日目)
さて、コミケ82も、私にとっての本番である3日目がやってまいりました。
なぜ3日目が本番かというと、評論・情報ジャンルがあるから。
ということで、主に評論・情報ジャンルで買った戦利品の紹介をしていきます。
なぜ3日目が本番かというと、評論・情報ジャンルがあるから。
ということで、主に評論・情報ジャンルで買った戦利品の紹介をしていきます。
3日目の戦利品の数々
登録:
投稿 (Atom)
