home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

331 - 340 / 1320    [|<]  [|<]  [<]  31  32  33  34  35  36  37  38  39  40   [>]  [>|][>|]
タイトル/名前 更新者 更新日
Groovy/Logging/slf4j + logback msakamoto-sf 2013-03-09 22:55:26
日記/2013/03/02/今日の調べ物 msakamoto-sf 2013-03-02 21:11:25
日記/2013/02/24/本日の「あとで読む」まとめ msakamoto-sf 2013-02-24 23:06:37
日記/2013/02/17/本日のメモ msakamoto-sf 2013-02-17 00:20:35
技術/IDE/Eclipse msakamoto-sf 2013-02-16 17:35:03
技術/RCS/PrivateRepositoryWithCloudStorage(Dropbox) msakamoto-sf 2013-02-11 17:34:51
技術/RCS/Git/Tig msakamoto-sf 2013-02-11 12:52:25
技術/Android/自己署名証明書 msakamoto-sf 2013-02-10 22:27:17
技術/UNIX/screen msakamoto-sf 2013-02-09 19:38:50
日記/2013/02/07/今日の調査メモ(Grails + MongoDB, alter table と PostgreSQL, gzip,bzip2,xz,lzop,lzmaパフォーマンス比較記事) msakamoto-sf 2013-02-07 23:15:21
ソート項目 / ソート順     1ページ 件ずつ表示

Groovy/Logging/slf4j + logback  

所有者: msakamoto-sf    作成日: 2013-03-09 22:33:52
カテゴリ: Groovy 

slf4j + logbackをGroovyで使うメモ。

logbackのサイト

公式ドキュメント重要。

スクリプトから使う

  • "log"を導入したいクラスに"@Slf4j"アノテーションを付けておきます。
  • "@Grab"でslf4j-apiとlogback-classicを指定すると動いてくれました。特に設定ファイルがない場合はDEBUGレベル以上でコンソールに出力。

slf4j1.groovy:

@Grapes([
@Grab(group='org.slf4j', module='slf4j-api', version='1.7.2'),
@Grab(group='ch.qos.logback', module='logback-classic', version='1.0.9'),
])
import groovy.util.logging.*

@Slf4j
class C1 {
    static void m1() {
        println 'from m1:'
        log.trace 'trace2'
        log.debug 'debug1'
        log.info  'info1'
        log.warn  'warn1'
        log.error 'error1'
    }
}

@Slf4j
class C2 {
    static void m2() {
        println 'from m2:'
        log.trace 'trace2'
        log.debug 'debug2'
        log.info  'info2'
        log.warn  'warn2'
        log.error 'error2'
    }
}

C1.m1()
C2.m2()

実行結果:

$ groovy slf4j1.groovy
from m1:
22:41:04.295 [main] DEBUG C1 - debug1
22:41:04.299 [main] INFO  C1 - info1
22:41:04.301 [main] WARN  C1 - warn1
22:41:04.301 [main] ERROR C1 - error1
from m2:
22:41:04.408 [main] DEBUG C2 - debug2
22:41:04.408 [main] INFO  C2 - info2
22:41:04.408 [main] WARN  C2 - warn2
22:41:04.408 [main] ERROR C2 - error2

logback.groovyを使う

logback.groovyをclasspathのパッケージ無しで参照できるようにしておきます。
mavenとかgradle使ってるなら、"src/main/resources/"とかの直下に置いておけば、パッケージングとか実行されるときにclasspathのパッケージ無しで指定できるようにしてくれるはずです。

スクリプト実行するなら、実行するスクリプトと同じ場所に置いておけば多分大丈夫。

シンプルなlogback.groovy:

import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.ConsoleAppender
import static ch.qos.logback.classic.Level.*

appender('CONSOLE', ConsoleAppender) {
    encoder(PatternLayoutEncoder) {
        pattern = "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n"
    }
}

root(TRACE, ['CONSOLE'])

これと上で紹介したslf4j1.groovyを実行する場合は、system class loaderとしてgrabを動かす必要があります。ということで、slf4j1.groovyの"@Grab"の前に以下の様な"@GrabConfig"を追加します。

@GrabConfig(systemClassLoader=true)
@Grapes([
@Grab(group='org.slf4j', module='slf4j-api', version='1.7.2'),
@Grab(group='ch.qos.logback', module='logback-classic', version='1.0.9'),
])
import groovy.util.logging.*

...

slf4j1.groovyを実行してみると、TRACEレベルが有効になり、日付が入るようになりました(=用意したlogback.groovyがちゃんとロードされてます)。

$ groovy slf4j1.groovy
from m1:
2013-03-09 22:44:09.107 [main] TRACE C1 - trace2
2013-03-09 22:44:09.113 [main] DEBUG C1 - debug1
2013-03-09 22:44:09.114 [main] INFO  C1 - info1
2013-03-09 22:44:09.115 [main] WARN  C1 - warn1
2013-03-09 22:44:09.116 [main] ERROR C1 - error1
from m2:
2013-03-09 22:44:09.260 [main] TRACE C2 - trace2
2013-03-09 22:44:09.260 [main] DEBUG C2 - debug2
2013-03-09 22:44:09.260 [main] INFO  C2 - info2
2013-03-09 22:44:09.260 [main] WARN  C2 - warn2
2013-03-09 22:44:09.260 [main] ERROR C2 - error2

GroovyServとの組み合わせでの注意点

  • logback.groovyを使うには、スクリプト側でsystem class loaderとしてgrabを動かす必要がある = logback.groovyもsystem class loader経由で読み込まれる影響か、一度読み込まれてしまうと、groovyserver側のインスタンスにキャッシュされる影響か(よくわからないけど)、logback.groovyを変更して再実行しても変更が反映されず、最初に読み込まれた時の設定のままになってしまう。
    • work arround : groovyserver -r でgroovyserver側のJVMを再起動します。

その他の参考情報



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-03-09 22:55:26
md5:2ceae0e90c751f9bf381691067ceeca0
sha1:69d6f6378cd36a7027118ea4ed0526b1ddd654af

日記/2013/03/02/今日の調べ物  

所有者: msakamoto-sf    作成日: 2013-03-02 21:10:11
カテゴリ: Windows 

Windows7の空き容量を増やすオーソドックスな方法:


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-03-02 21:11:25
md5:cb31720063289ac4f3c3706010a330e6
sha1:c8dc16fb4458c8f5895a23292acb20783f3f4eb3

日記/2013/02/24/本日の「あとで読む」まとめ  

所有者: msakamoto-sf    作成日: 2013-02-24 23:03:56
カテゴリ: Groovy 

GParsとかClojureとactorとか:


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-02-24 23:06:37
md5:a502e7e4fc4ab0f743029dc9a5f42cce
sha1:a9d4efc5ca00f2388ac997a2f805513c99b1077f

日記/2013/02/17/本日のメモ  

所有者: msakamoto-sf    作成日: 2013-02-17 00:02:04
カテゴリ:

AWSとSIビジネス:

↑の資料で社内コミュニケーションで使ってると出てきた"Yammer"について:

"Yammer"という名前だけは目にしてたんですが、こういう使われ方してたんですね。

次、ClojureとSTM:

ガンダム UC、Gyaoで視聴。いや~、可変型MS多くて、動きがスゴイですね!あと1st-Z-ZZつながりのキャラのチラ見せで鼻血吹きそうです。カイ・シデンとかカイ・シデンとかカイ・シデンとか。もうカイ・シデンのチラ見せシーンはキタ━━━━(゚∀゚)━━━━!!状態でしたね。あとブライト艦長とかブライト艦長とかブライト艦長とか!あの二人、もうめっちゃ大好き!!

あと、開発ブランクがかなり精神的に重くのしかかってて、GitHubとかscreen当たり前とかVimプラグイン使えて当たり前とか複数LL言語をbrewとかvirtualenvで使いこなせて当たり前とか、「~出来て/使いこなせて/キャッチアップできて当然」モードに入って焦燥感が黄色信号になったので、慌ててひろさちやの仏教書と法句経の解説書眺め直して調律しなおしたりしてました。
どうにも、亀のように歩きが遅くて腰が重いので、なかなかWebの技術進歩スピードに開発者としてついていきづらい感じがありますな・・・。否、そもそもキャッチアップし「なければならない」と考えること自体が精神衛生上よろしくないんですけどね、仏教的には。

・・・しかし、仏教がなかったらまた焦燥感に引きずられてそのままレッドゾーンに突入してたかと思うとゾッとする・・・。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-02-17 00:20:35
md5:ce2ff1338922a10fcea95e0a99bd7c1f
sha1:cb144516157d5a76a4e5f4269db28721ccea2b39

技術/IDE/Eclipse  

所有者: msakamoto-sf    作成日: 2013-02-16 17:32:09
カテゴリ: Eclipse 

Eclipseを使う時のメモ

使ってるプラグイン

  • m2e (Maven Integration for Eclipse)
  • Subversive (SVN Team Provider)
    • とくに困ったことが無いので。Subclipseは使ったこと無いです。
  • MercurialEclipse (HgEclipseではない方です)
  • TestNG for Eclipse
  • GGTS (Groovy/Grails Tool Suite)

Javaプログラミングとしての設定

参考:

上記資料からコピペ

  • 行番号と空白文字の表示
    • [General]-[Editors]-[Text Editors]でShow line numbersとShow whitespace charactersにチェック
  • ファイルセーブ時に使ってない import 文を消す
    • [Java]-[Editor]-[Save Actions] で Perform the selected actions on save の Organize imports にチェック
  • 補完時に上書きする
    • [Java]-[Editor]-[Content Assist] で Complletion overwrites にチェック
  • どこで「;」を押しても行末にいれる
    • [Java]-[Editor]-[typing] で Automatically insert at correct position の Semicolons にチェック
  • java.awt.Listとかを補完対象から外す
    • [Java]-[Appearance]-[Type Filters] に java.awt.* を追加
  • import static org.junit.Assert.* を展開しないようにする
    • [Java]-[Code Style]-[Organize Imports] の Number of static imports needed for .* を 1 にする
  • assertThat とか補完できるようにする
    • [Java]-[Editor]-[Content Assist]-[Favorites] に org.junit.Assert と org.hamcrest.CoreMatchers を追加
  • クラス名なのか変数名なのかわかりやすくするためのSyntax Coloring
    • [Java]-[Editor]-[Syntax Coloring] でClasses,Enums,IntefacesをEnable,Boldにする。
  • コメントのソースコードフォーマッタ
    • デフォルトだと1行が80文字で折り返されちゃうので120文字に設定。-> CommentsタブのLine Widthをいじる
    • また、JavaDocコメントや普通のコメントがフォーマットされるのでEnable javadoc comment formatting,Enable block comment formatting,Enable line comment formattingのチェックを外す。
  • Workspaceでの改行コードや文字コード
  • [General]-[Workspace]で変更できる。
  • JSPファイルの文字コード
    • [Web]-[JSP Files]でEncodingを設定
    • [General]-[Content Types]で"Text" - "JSP"のDefault encodingを変更するやり方も見たことあるんだけど、どっちが正しいんだろう・・・。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-02-16 17:35:03
md5:943d554e7de537910a0bc039a7b3fe93
sha1:37c86c11a85788abca628b7a9d3b0ac9929b2733

技術/RCS/PrivateRepositoryWithCloudStorage(Dropbox)  

所有者: msakamoto-sf    作成日: 2013-02-11 17:30:58
カテゴリ: Git Mercurial Subversion 

Dropboxを使ってprivateなリポジトリを共有するノウハウのメモ書き。
ひとまずはGoogleで見つかった参考リンクのまとめ書き。

Git版:

Subversion版:

Mercurial版:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-02-11 17:34:51
md5:63e63e64593d736f0ba4f226132bb3ec
sha1:78dda7cd63469c8246e48b85dca45be71b6072fc

技術/RCS/Git/Tig  

所有者: msakamoto-sf    作成日: 2013-02-11 12:50:27
カテゴリ: Git 

Tig便利!

など。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-02-11 12:52:25
md5:2a627b255984558b76db7077acc0790c
sha1:fa8f4d686370e32bd651d6a968d00b2fbe3d5dd9

技術/Android/自己署名証明書  

所有者: msakamoto-sf    作成日: 2013-02-10 22:25:53
カテゴリ: Android 

本サイトでは、これまでAndroid上で自己署名証明書を使う技法として、証明書の検証自体を無効化する手法を紹介していました。Google検索でも"Android 自己署名証明書"等のキーワードで比較的上位に表示される状況となっているようです。

しかしながら、本サイトで紹介している手法をそのまま用いると中間者攻撃(MITM)を受ける危険が発生します。コピペなどにより外部開発者のアプリに問題が入り込むのを防ぐため、これらの記事については一旦非表示にしました。自己署名証明書を用いるにあたり、より安全な技法を見つけた場合は、そちらを紹介する形で復活させようと考えております。

参考:

  • Androidアプリの多くに深刻なSSL脆弱性――中間者攻撃のおそれ | セキュリティ・マネジメント | トピックス | Computerworld - エンタープライズITの総合ニュースサイト


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-02-10 22:27:17
md5:4e4b4aaeeb10d54f85304999bbc61b27
sha1:2040e169618f421528170eb660ccc73eff3c435c

技術/UNIX/screen  

所有者: msakamoto-sf    作成日: 2013-02-09 18:45:17
カテゴリ: Linux UNIX 

GNU screen のコマンドラインオプションやキーバインドの早見表。

自分がよく使うscreenrc: https://gist.github.com/msakamoto-sf/4744713#file-screenrc

コマンドラインオプション

セッションの一覧:

$ screen -ls

セッションにattach:

$ screen -r [[pid.]tty[.host]]
$ screen -r sessionowner/[[pid.]tty[.host]]

新しいセッションを作るときにセッション名指定:

$ screen -S セッション名

デタッチされてないセッションへアタッチ(マルチディスプレイモード)

$ screen -x -r [[pid.]tty[.host]]

screenのセッション中から、ウインドウのタイトルを指定して新しいウインドウを起動

$ screen -t xxxxxx

見知らぬ端末でscreenを実行する前にすべきこと

  1. /etc/screenrc, ".screenrc", SCREENRC系環境変数をチェックし、 escape の設定を確認する。
  2. キーバインドの設定を確認し、最悪、":"で全てコマンド入力で乗り切ることを覚悟する。
  3. 我慢できなければ好きな内容で適当なファイル名でscreenrcを作成し、"screen -c myscreenrc" のように指定して起動する。

個人的によく使いそうなコマンドとデフォルトのキーバインドのまとめ

キーバインドは、デフォルトの "escape ^Aa" 設定のまま、"C-a"として記載してます。
C-aに続けて入力するキーは、大文字と小文字が区別されます。

基本とお助け

command key-bind summary
help C-a ? キー割り当ての表示
colon C-a : コマンド入力
quit C-a C-\ 全ウインドウ破棄 + screen終了
clear C-a C 画面クリア
redisplay C-a C-l or C-a l 画面再描画
detach C-a C-d or C-a d detach

screen利用状態の把握

command key-bind summary
displays C-a アタッチ中の画面をリスト表示
sessionname [name] - 現在のセッション名を変更する。引数なしなら現在のセッション名を表示。
info C-a i 現在のウインドウの情報を表示

ウインドウ操作

command key-bind summary
windowlist [-b] C-a " ウインドウを表形式で一覧表示。key-bindされてるのは"-b"付き。
windows C-a C-w or C-a w ウインドウのリストをメッセージ行に表示
screen C-a C-c or C-a c 新しいウインドウとシェルを作成
title [newtitle] C-a A 現在のウインドウのtitleを設定
other C-a C-a 直前のウインドウに切り替える。デフォルトではコマンド文字の2回繰り返し。
kill C-a C-k or C-a k 現在のウインドウを破棄
monitor C-a M 現在のウインドウの監視のON/OFF
next C-a space/n/C-n 次のウインドウに切り替える
prev C-a bs/h/p/C-p 前のウインドウに切り替える

リージョン操作

command key-bind summary
split C-a S 現在のリージョンを縦に分割
focus C-a tab 次のリージョンに移動
remove C-a X 現在のリージョンを破棄
only C-a Q 現在以外のリージョンを破棄
fit C-a F ウィンドウのサイズを現在のリージョンのサイズにする
resize = - 全てのリージョンを同じ高さにする
resize max - 現在のリージョンの高さを最大にする
resize min - 現在のリージョンの高さを最小にする

コピー操作

command key-bind summary
copy C-a [/C-[/ESC コピーモード開始
paste . C-a ] ペースト

コピーモードに入ったら、最初にRETURNでコピー開始点決定、次のRETURNでコピー終了点決定+コピー、が基本。
コピーモードを終了するには、コピーモード中の操作に関連付けされていないキーを何かしら押せば終了する。コピーモード中の操作はviみたいなキーバインドになってるので、個人的にはESC押せば抜けられる、と覚えます。コピーモードから抜けたら、"Copy mode aborted"というメッセージが表示されます。

参考

使い方

".screenrc"を参考にしたサイト:

その他:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-02-09 19:38:50
md5:ee542b7c40a4c01dd3842a743e24d163
sha1:6049f691eecda79c2d09c3a2a2bcca6303c54dd2

日記/2013/02/07/今日の調査メモ(Grails + MongoDB, alter table と PostgreSQL, gzip,bzip2,xz,lzop,lzmaパフォーマンス比較記事)  

所有者: msakamoto-sf    作成日: 2013-02-07 23:14:26
カテゴリ: Grails Groovy PostgreSQL 

GrailsでのDB Migration Plugin : Liquibaseを使ってる。

Groovy でメール送信

PostgreSQLでのALTER TABLEのパフォーマンス

基本的には、一旦テーブルのINDEXを全部DROPしてからALTER TABLE ADD COLUMNして、終わったらINDEX付け直すのが王道みたい。この辺、内部のストレージの使用方法的にはどんな工夫をしてるのかちょっと気になる。
また、Liquibaseでテーブル列を追加するようなmigrationを行うとき、上記のようにINDEXのDROPと付け直し処理を省力化してくれるのかも検証ポイントか。

Groovy の Process クラスが、 "|" でパイプをつなげられる仕組み:

  • GroovyのJDKのJavaDoc参照。java.lang.Processクラスに "Process or(Process right)" メソッドが追加されている。
    • →これにより、"|"→orメソッドの呼び出しで、パイプがつなげられる仕組みになってるみたい。

unix上での圧縮系コマンドいろいろ:gzip, bzip2, xz, lzop, lzma

今探してるのは、テキスト(それも同じフレーズが隣接して多数散らばってる)と、一部でJPEG画像などのバイナリデータが混在する1GB - 10GB(まれに30GB over)なアーカイブファイルにたいして、とにかく圧縮率が良い物。圧縮自体は夜間バッチ処理などで動作させる予定なので、CPU/メモリは、圧縮時は潤沢に使える。伸長は夜間じゃないかもしれないが、伸長速度は遅くても問題ないユースケース。
そうなってくると、xz か lzma という感じになりそう。ただ、xzのサイトの解説見ると "XZ Utils are the successor to LZMA Utils." とあるので、名前的にlzmaは実質、今ならxzで良いのかもしれない。(実際、gzip/bzip2/lzmaの比較記事は2008年、gzip/bzip2/xz/lzopの比較記事は2011年と、タイムラグがある。)

マルチコアを有効活用するpigz/pbzip2の話:


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-02-07 23:15:21
md5:928f3858f097dce2fa9f824d9e562a62
sha1:d5c712cdc310bbeec27dd5bf22866c6f6d9a72bf