ようこそゲストさん

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/03/23(水) 災害時のシナリオについて

2011/03/23 10:06 未分類snjx
今回の件でとりあえず直近の課題として、手持ちのバックアップが根こそぎぶっ飛ばされたときのことを考えないといけなくなった。

それはもちろん原子力のことを念頭においてるんだけど、ほかの分野でも同様だと思う。たとえばそうだな、住民基本台帳のデータが流されちゃったことなんか、モロにそれじゃないか?

ただ、そういった表に見える課題とは別に…いや、その背景にもうひとつ重要なテーマが隠されているような気がしてきた。

災害時の対策を検討するときに、何かしらのシナリオを想定することって、どれだけ妥当性があるもんだろうか?

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

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

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

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

続きを読む

2011/01/04(火) 仕事始め

2011/01/04 12:02 ごあいさつsnjx
今年の山陰地方は数年ぶりの大雪で、年末年始はあちこちで混乱があったことを記述しておく。
松江市の方々で交通が遮断されたり停電したりした割には、仕事始めはたいしたトラブルもない通常の週明けであったことよ。

善哉善哉。

2010/11/18(木) ちなみにー

2010/11/18 13:25 ごあいさつsnjx
ここって見てる人いる?

1: snjx 『いーなーいーよーねー。』 (2010/11/24 17:58)

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

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

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

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

続きを読む

2010/07/07(水) あーなんか今年もこんな感じ

2010/07/07 21:57 ごあいさつsnjx
しごとがいそがしくなって、あーなんつーかね。
今年もこんな感じで進んでいきそうですな。

2010/01/12(火) 【急募】グーグルアドワーズの粋で鯔背な利用法。

2010/01/12 22:57 電波受信snjx

【急募】グーグルアドワーズの粋で鯔背な利用法。

Googleさんから、こんなお手紙もらいました。Googleアドワーズの無料お試し券5000円分です。


CCI20100112_00000_small.png

続きを読む

2010/01/01(金) 明けましておめでとうございます。

2009/12/31 24:06 ごあいさつsnjx
本年も変わりませず宜しくお願いします。

去年はこちらはほとんど放置プレイでした。今年も多分こんな調子で行くと思います。
ま、ちょこちょこtwitterやtumblrはいじっていると思いますので、その辺冷やかしてみてください。

積ん読をちょっと切り崩さないとなー。

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から書誌情報を取得するサンプル。

続きを読む

2009/03/19(木) ロケットパンチ

2009/03/19 10:07 電波受信snjx

ロケットパンチとぐぐると、スポンサーリンクにすげーこと書いてある。


ロケットパンチ
無料で国内配送 (1500円以上のご注文)
関東なら即日配送も
Amazon.co.jp

ロケットパンチの画像検索はさらにすごい。

ロケットパンチ
ロケットパンチをさらに安く
関東なら即日配送も
Amazon.co.jp

やすくなるんだって!
まぁ消耗品だしね。

さすがAmazon。世の中進んでいるな。

1: shaker。 『なんか「V・G猫ロケットパンチグローブ」ってのが気になったワタクシ。萌ゆる〜♪ってことで。』 (2009/03/21 23:42)

2: snjx 『うん、まぁ。 人の趣味には特に文句をつける気はありませんが、ヴァリアブル・ジオってエロゲですぜ。 http://ja.wikip...』 (2009/03/23 18:21)

3: shaker。 『ただ単にヲタグッズとして「萌え〜」なのかと思いきや得炉毛でしたか!V・Gとかって略すなよっ!! シューティングゲームとかバーチャ...』 (2009/03/25 26:18)