ようこそゲストさん

Super Neurotic Junction

メッセージ欄

分類 【研究課題】 で検索

一覧で表示する

2015/06/04(木) Jenkinsでビルドトリガが設定されているジョブの探し方

2015/06/04 16:53 研究課題snjx
忘れた頃にやってくる。

さて、ちょっとjenkins君をいじる機会があってですね。
ビルド環境が一箇所に集中することで、奴の環境でビルドできたけど俺の環境でビルドできんぞどうなってんだぁ!なんつーことがなくなっていろいろ捗るのだけど、いろんなジョブをみんなが好き勝手に作っていると、けっこう無駄なジョブでいつの間にかリソースを圧迫してたりする。

かと言って、ジョブを整理しようとすると、そのジョブはリポジトリのコミットを監視しながら随時ビルドしてんだ勝手に止めるなどうなってんだぁ!なんつーことになる。

そこで、ビルドトリガを設定されているジョブの探し方をここにメモしておく。

jenkinsサーバにsshなどでログインし、以下のようにコマンド実行。
[root@localhost ~]# cd /var/lib/jenkins/jobs
[root@localhost jobs]# grep -r \<triggers\> */config.xml
まあ、難しいことはなくて、トリガが設定されていなければ、config.xml中のタグが、
<triggers>
ではなく
<triggers/>
となる。triggersタグに何か書いてあるものを探すだけなのね。
出力されたディレクトリの名称が、そのままjenkinsのジョブ名称となるわけよ。

2013/06/17(月) VBScriptで引数を受け取る、VBScriptで正規表現

2013/06/17 19:17 研究課題snjx
やむにやまれぬ事情があって、いまさらながらVBScriptをちょっといじっている。
最初はバカにしていたけど、結構それなりに使えるものだというのはわかってきた。
何でもやってはみるもんだよね。
と、いうことで、2題ほどメモ代わりに書いてみる。

続きを読む

2012/02/26(日) rubyでメッセージボックス

2012/02/26 23:03 研究課題snjx
メッセージボックスというか、Windows Scripting Hostのpopupなんだけど。
ポイントはVbOKOnlyとかの定数を書いているところ。
win32oleの使い方は結構あちこちで書いてあるし、excelなんかが持っている定数をrubyで使う方法なんかは探すと見つかるけど、意外や意外、普通にメッセージボックスを使う方法が結構少なかった。
で、ま、最低限いりそうな部分を書いてみたのさ。
require 'win32ole'
require 'singleton'

class Msgbox
	include Singleton
	# ボタンの種類
	VbOKOnly		= 0		#[OK] 
	VbOKCancel		= 1		#[OK]  [キャンセル] 
	VbAbortRetryIgnore	= 2		#[中止] [再試行] [無視] 
	VbYesNoCancel		= 3		#[はい] [いいえ] [キャンセル] 
	VbYesNo			= 4		#[はい]  [いいえ] 
	VbRetryCance		= 5		#[再試行]  [キャンセル] 
	# アイコン
	VbCritical		= 16	#警告メッセージ アイコン
	VbQuestion		= 32	#問い合わせメッセージ アイコン
	VbExclamation		= 48	#注意メッセージ アイコン
	VbInformation		= 64	#情報メッセージ アイコン
	# ボタン戻り値
	VbOK			= 1		#[OK]ボタン
	VbCancel		= 2		#[キャンセル] ボタン。
	VbAbort			= 3		#[中止] ボタン。
	VbRetry			= 4		#[再試行] ボタン。
	VbIgnore		= 5		#[無視] ボタン。
	VbYes			= 6		#[はい] ボタン。
	VbNo			= 7		#[いいえ] ボタン。
	def initialize
		@wsh = WIN32OLE.new('WScript.Shell')
	end
	
	def open(strText,intSecondsToWait,strTitle,intType = VbOKOnly + VbInformation )
		@wsh.popup(strText,intSecondsToWait,strTitle,intType)
	end
end

msgbox = Msgbox.instance
msgbox.open("hoge",0,"fuga") #デフォ

ret = msgbox.open("hoge",0,"fuga", Msgbox::VbOKCancel + Msgbox::VbCritical ) #OkCancelでやばいアイコン

case ret 
when Msgbox::VbOK
	puts "ok"
when Msgbox::VbCancel
	puts "cancel"
end

続きを読む

1: 『クラス内の定義を削除して、 WIN32OLE.const_load('Visual Basic For Applications...』 (2022/02/28 11:46)

2012/02/23(木) くるくる回る

2012/02/23 24:10 研究課題snjx
深夜に思いついてしまった。
rubyでコマンドラインでくるくる回る。
@str = '(´v` )'

def windmill
	case @str
		when '(´v` )'
		@str='(v`   )'
		when '(v`   )'
		@str='(`    )'
		when '(`    )'
		@str='(      )'
		when '(      )'
		@str='(    ´)'
		when '(    ´)'
		@str='(   ´v)'
		when '(   ´v)'
		@str='( ´v`)'
		else
		@str= '(´v` )'
	end
	print "\r" + @str
end 

20000.times {
	windmill
}

2012/02/12(日) rubyでfso

2012/02/12 15:11 研究課題snjx
ちょっとしたツールを作ったときに、事前調査代わりに小手調べしたコードを書いておく。
日常的な作業を一部自動化させたくて、ちょっとディレクトリの操作をしたかったの。
# 指定したフォルダ以下のサブフォルダを全部出力

require 'win32ole'

def getSubFolders folders
	folders.each do |folder|
		puts folder.Path
		getSubFolders folder.subFolders
	end
end

fso = WIN32OLE.new('Scripting.FileSystemObject')

getSubFolders fso.getFolder(ARGV[0]).subFolders

ARGV[0]ってのはコマンドラインの第一引数をあらわすわよ。

2011/12/26(月) batファイルでメッセージを出す方法

2011/12/26 13:45 研究課題snjx
あー。

いまどきの人って、windowsのバッチファイルなんて使うのかしらなどという疑問は置いておいて。

以前に書いたWindowsってsleepコマンドないんだねーの応用編として、バッチファイルからメッセージボックスのポップアップを出す方法をかいておく。

まぁ、簡単な話で、以下のような感じ。
echo msgbox "メッセージよぉん",vbCritical,"タイトルよぉん" > %TEMP%/msgboxtest.vbs & %TEMP%/msgboxtest.vbs
この内容のバッチファイルを作って実行すると、以下のような感じの画面が出てくる。
msgboxtest.PNG

このワンライナーはいろいろ応用が利きそう。

1: 通りすがり 『すっげぇΣ(・ω・ノ)ノ batにたった1行でポップアップが組み込める! ありがたく使わせていただきます!』 (2013/03/06 10:22)

2: 企業内システム管理者 『まさに探していた例文でした。感謝!』 (2013/04/04 12:11)

3: snjx 『あらまぁこんな古いコンテンツへようこそ。 お役に立てればこれ幸い。 …てことは、あれ?batファイルって結構使ってんのかな。』 (2013/04/22 18:49)

4: ポップマン 『デモで「ポップアップが出たら○○する」という条件を作りたくてこちらに辿り着きました。以前までは、バッチ内で"msg"コマンドを使...』 (2013/07/08 14:58)

5: snjx 『今年に入ってどうしたことでしょうか。 バッチファイルはやってんの?まじ? いや、みなさんそんな断りがないと使えないようなたいそ...』 (2013/07/16 11:43)

6: snjx 『あ、そうだ このバッチそのまま動かすと、%TEMP%にごみが残るので、そこだけお含み置きくださいな。』 (2013/07/16 11:56)

7: 西郷 『参考にさせて頂きました。 助かりました。 ちなみに作成されたvbsファイルを即デリートさせるのって ありだと思いますか? それ...』 (2013/07/17 22:43)

8: snjx 『コストと内容によってどちらでもお好みで。 もともとバッチファイルなんてアドホックな用途ばっかりなんで、上記例題を書こうと思った...』 (2013/07/17 25:46)

9: 西郷 『わかりやすい説明ありがとうございました。』 (2013/07/18 20:38)

10: bbs 『バッチでこんなに簡単にメッセージボックス出せるとは思いませんでした! ありがとうございます。使わせていただきます。』 (2013/12/03 15:18)

11: patchman 『batで強制的に稼働中のプロセスをKillっているbatがあるのですが、何もメッセージなしで使っているので、メッセージが出ればな...』 (2013/12/12 14:45)

12: mize 『感動です。使わせていただきます。ありがとうございます。』 (2014/10/15 15:26)

13: よっちゃん 『すげー』 (2015/01/14 25:58)

14: dada 『参考にさせて頂きます。ありがとうございました。』 (2015/03/05 16:20)

15: gakke 『やっと見付けました。。。(^o^)』 (2015/05/31 14:41)

16: けんし 『とても助かりますた』 (2015/07/25 14:53)

17: かな 『ありがとうございます。使わせて頂きます(^○^)』 (2015/08/08 9:36)

18: hacker(仮) 『ありがとうございます! ってかbat流行ってんのかな?』 (2015/10/03 17:01)

19: ゆうた 『たどり着きました...ありがたく使わせて頂きます。』 (2015/10/11 21:53)

20: ぷげら 『メッセージの改行どうしたらいいでしょう "はてな"&vbCr&"はてな"としましたがだめでした』 (2015/10/23 18:06)

21: ぷげら 『メッセージの改行どうしたらいいでしょう "はてな"&vbCr&"はてな"としましたがだめでした』 (2015/10/23 18:06)

22: ぷげら 『&じゃなくて+でだきますた』 (2015/10/24 11:48)

23: snjx 『ぷげらさん、すみませんめったに自分のとこ見に来ないので見逃していました。 自己解決なさったようで何よりでした。』 (2015/10/28 14:07)

24: ・w・ 『@if(0)==(0) ECHO OFF echo ■BATによる前処理です。■ cscript.exe //nologo //...』 (2016/05/10 10:37)

25: snjx 『おーなるほど、batファイルの中でcscriptを読んじゃうわけですね。 これは面白い。 http://computer-tec...』 (2016/05/16 11:27)

26: 通りすがり 『なるほど、ありがとうございました! …だけでは何なので、ご参考まで バッチファイルのエスケープはハットです.>20さん、見て...』 (2016/07/29 12:01)

27: Uk45.ckw 『お、おお(感激 友達に送るウイrいやいやメッセージのために使わせていただきますw』 (2016/08/03 10:42)

28: snjx 『…なぜ、この記事だけこんなに伸びてるんだろう。』 (2016/08/10 11:11)

29: 通行人 『ありがたやありがたや 使わせていただきます!』 (2016/09/16 17:18)

30: すげー 『汎用性すげー いただき!』 (2016/09/26 15:07)

31: ありがたい 『いただきまーす thx!』 (2016/10/25 18:32)

32: 純白に輝く流星るけぴす√ 『moraimasu』 (2017/06/22 23:04)

33: tyhshi 『AccessVBAだけはかろうじてわかります。自作アプリの第三者のセットアップにAccessを使うなんて変なのでwとりあえずバッ...』 (2018/07/22 13:58)

34: ぱねぇ 『天才現る』 (2020/08/25 9:12)

35: その 『ありがとうもろこし』 (2020/09/08 16:25)

36: コアラ 『なんか文字化けする。』 (2021/03/28 10:49)

37: ほい 『すごいです。感謝』 (2021/09/08 11:09)

38: ゆっくり-games 『UTF-8ではなくANSIで文字を保存すると文字化けしません(それ以外だと文字化けします)』 (2021/11/20 21:50)

39: 匿名くん 『おもろい』 (2024/02/28 10:37)

2011/12/25(日) awstats_buildstaticpages.plが勝手にプレフィックスをつけくさる件について

2011/12/25 18:21 研究課題snjx
なんかねー以前もこの時期に、季節と関係ないネタで更新したよねーほほほ。

さて、自サイトのアクセス解析にawstatsを入れてみたんだけど、若干はまった部分があったのでメモしてみる。
なんでだろ、きっと俺一人じゃないのだろうにあんまり情報がなかった。awsatatsってあんまり使われてないんかな?

まず、現象。

Apacheアクセスログ解析(AWStats)
こちらを参考に、awstatsをインストールしてアクセス解析仕込んだのね。

インストールと設定はおおむねうまくいったのね。で、単発ではちゃんと動くようになったんだけど、どうもなんだか、index.htmlの統計ページから個別の「全リスト」へのリンクが間違ってるくさい。
手順に間違いはないようなのに、404が返ってくるのだ。

ディレクトリの中を見てみると、index.htmlでは「snjx.info.yyyymm.allhosts.html」とかでaタグ書かれているのが、実際のファイルでは「awstats.snjx.info.yyyymm.allhosts.html」なんてファイル名で作られていた。

ありゃー。

で、どうしたのか

これはつまり、統計ページを作るところでaタグが間違っているのか、月別の詳細ページを作るところでファイル名が間違っているのかどっちかだと見当をつけた上で、それぞれどこで作っているのか手順の再検討を始めたわけさ。
で、awstatsreport.shの中身をもにょもにょ読んでいると「awstats_buildstaticpages.pl」ってのが実際のファイル作成を担っている模様。ははぁawstatsを直接キックしているわけじゃないのね。

直接、awstats_buildstaticpages.plをたたいて、あれこれ実験してみてよくわかったけど、こいつが詳細ページのファイル名に勝手にawstatsとかつけるくさい。そのくせ、統計ページのaタグはホスト名から始まっているだけなのだ。悪さをしているのはこいつ。

で、けっきょく、awstats_buildstaticpages.pl を修正した。
446行目くらいを以下のように。

# Launch all other awstats output
for my $output (@OutputList) {
    my $command="$smallcommand -output=$output";
    print "Build $output page: $command\n";
    $retour=`$command  2>&1`;
#    $OutputFile=($OutputDir?$OutputDir:"")."awstats.$OutputSuffix.$output.$StaticExt"; # 勝手につける文言を削除
    $OutputFile=($OutputDir?$OutputDir:"")."$OutputSuffix.$output.$StaticExt";
    open("OUTPUT",">$OutputFile") || error("Couldn't open log file \"$OutputFile\" for writing : $!");
    print OUTPUT $retour;
    close("OUTPUT");
    $cpt++;
    push @pages, $OutputFile;    # Add page to @page for PDF build
}

続きを読む

2011/01/05(水) Windowsってsleepコマンドないんだねー

2011/01/05 17:04 研究課題snjx
Windowsのコマンドシェルって、意外と基本的な機能がなかったりして使いにくいよね。
sleepとかさ、リソースキット入れると使えたりするけどさ、そういうの面倒じゃん?
いや、そりゃ、WSH使えば何だってできるよ?できるけどさ、なんか微妙に大げさな気がしない?

ほら、Railsで試作とかしてるとさ、ちょっとローカルで動かしてみたい時ってあるじゃん?
そういう場合は、WEBrickキックしーの、立ち上がりきるまで待ちーの、ブラウザ立ち上げーのってマウスでカチカチすんのだるいじゃん?そういうの一発で起動しときたいじゃん?UNIX系のOSだったらそれぞれのステップで1行書けばすむ話じゃん?たかだかこの程度でVBScriptやJavaScript書くの面倒じゃん?

んなこんなで、できるだけ簡単にバッチファイルを書いてみたのが続きのやつ。

続きを読む

2010/08/17(火) 楽観的ロックと悲観的ロック

2010/08/17 14:41 研究課題snjx
音楽の話題ではないよ。

railsで、DBのレコードロックについてちょっと調べた。

ruby on railsが提供するレコードロックは楽観的ロックと悲観的ロックの2種類がある。
この、いかにも直訳調な名称もどうかと思うけど、たいがい二つ並べて解説されているのでなんかこうよく似たものと思われがち。ところがこの二つ、実は使いどころがまったく違うシロモノだったって話。

続きを読む

2009/12/24(木) rubyで複数のrsyncを、パスワード入力とともに実行。最後にcrontabに登録

2009/12/24 23:27 研究課題snjx
なんかすげーひさびさの更新が、こんな味も素っ気もない記事ですな。
…最近なんかイベントがあったはずなんだけど、よくわかりませんな。中止になったんじゃないですか?

外部コマンドを実行するとパスワード入力を求められちゃう

さて、ある事情があって、異なるサーバ間でデータの同期を取る必要がありいろいろ細工してみた。
rsyncコマンドで対象ファイルを指定すればいいんだけど、その際に厄介なことは、パスワードの入力が求められること。
一回限りだったらそれでも別にいいんだけど、できればcronに突っ込んで1時間ごとに実行したい。
rsyncコマンドを実行する際にパスワード入力をさせない方法は幾つかあるようだけど、どれも面倒そう。こういう運用は2ヶ月ほどの予定で、それ以後は同期元のサーバは停止するので、わざわざrsyncデーモンを走らせるとかの処置は、やってもいいけどちょっとモチベーションがわかない。
本格的なバックアップサーバを用意するわけではないので、このままrubyで外部コマンドを実行する簡単なスクリプトを組んでおきたい。

で、スクリプトを組む上でのポイントは
  • 複数のrsyncコマンドを実行する
  • パスワードを入力する
  • 成功失敗に関わらず、実行結果をログに出す
  • ひとつのコマンドが失敗しても次のコマンドを実施する
ほんとうだったらここで、スクリプト中のパスワードも隠蔽したいけど、まあ、同期先も元も俺ひとりが管理しているし、コードの中に平文でもいいか。
こういう対話的な処理をrubyで実現する場合、ptyとexpectを利用するのが定番らしい。

続きを読む

1: snjx 『参考までに』 (2016/01/14 10:09)

2: snjx 『↑URLを参照のこと』 (2016/01/14 10:09)

2009/06/26(金) rubyでamazonから書籍検索

2009/06/26 16:44 研究課題snjx
ISBNではなくて、作者やタイトルから書籍を得るときのサンプルコードも書いておく。

よくわからんのは、req.search( is, rg , 3) と書くと、1から3ページ目まで送ってくること。
2〜5ページ目だけよこせというような使い方ができない。なんでじゃ。使いにくい仕様だ。

続きを読む

2009/06/24(水) rubyでamazonからISBNを検索

2009/06/24 28:58 研究課題snjx
日本語ドキュメントがなくてちと悩んだんだけど、結果的にすごい簡単なことだったのでメモしておく。

rubyスクリプトでamazonのWabAPIを利用して、ISBNから書誌情報を取得するサンプル。

続きを読む

subversion

2009/02/05 11:23 研究課題snjx

ソースやドキュメントのバージョン管理をしたい。

ロールバックとかブランチとか。
SVNはちょっと運用に工夫が必要な場合があってなぁ。

Winのフロントエンド

http://tortoisesvn.net/docs/nightly/TortoiseSVN_ja/index.html

ドキュメント管理に使えるか

http://freemind.s57.xrea.com/xdocdiff/index.html

SQLメモ

2009/01/27 15:53 研究課題snjx

MAX関数

data_tableのidに現在入力されている最大値を表示。
select max(id) from data_table;
data_tableのColumn1に登録されているデータで一番長い文字列は何文字か知りたい。
select max(length(Column1)) from data_table;

テスト環境をいじる

2009/01/23 13:33 研究課題snjx
修正モジュールと元のモジュールを入れ替えてがりがりやっていると、絶対途中で間違えてややこしいことになる。
こういう場合の、間違わずにすむ適当なスタイルを開発したい。

手動をできるだけ減らすのが目的。

どういう形がいいだろう。

よくやる行為としては、別環境でコンパイルしたモジュールを本番環境のしかるべき場所にコピーする。旧モジュールがあった場合には基本的に上書きだが、その際、旧モジュールをすぐに元に戻せるように、ファイル名の末尾に日付をひっつけたりして旧モジュールのバックアップを取っておく。
実行モジュールの上書きをする際には、該当するプロセスが実行されていないかどうか確認したりする。
この辺、手動でポチポチコマンドを打っているとどうしても間違えてしまう。間違えて、ひどい目にあってしまう。こいつをどうにかしたい。

課題としては
  • 複数ファイルを指定できる
  • 対象モジュールはデプロイ先をファイルごと個別に指定できる。
  • 指定したディレクトリが正しいかどうか、ファイルが存在しているかどうか確認できる。
  • 旧モジュールのバックアップをワンタッチでできる。
  • 新モジュールのデプロイをワンタッチでできる。
  • バックアップ先、リストア先を指定できる。
  • ワンタッチで新旧の交代ができる。
  • 個別ファイルの、新旧交代がワンタッチでできる
  • できるだけ、実行環境は荒したくない。
  • sshの外部スクリプトなどで実行できないか検討
  • 動作ログをとる。


関連キーワード:Linux,Java,開発,BASH

Javaでデバッグ

2009/01/19 22:28 研究課題snjx

とりあえずリンクを張っておく

あれこれやりながら、自分なりのまとめとリンクの淘汰をやっていく。
想定する状況としては
  • JSPでブレークポイントを張りたい
  • BASHなどで、いつキックされるかわからないバイナリでブレークポイントを張りたい。
jdb - Javaデバッガ

jdbの使い方

リモートデバッグ - EclipseWiki

技術/Java/Tomcat上でJSPをJDBでデバッグとか。


関連キーワード:Java