Skip to content

Instantly share code, notes, and snippets.

@froop
froop / ImmutableCollection.java
Last active August 29, 2015 13:57
[Java] 不変コレクション
/**
* 変更不可(イミュータブル)なCollection.
* @param <E> Element: Collection要素の型
* @param <C> Collection: Collectionの型
*/
public abstract class ImmutableCollection<E, C extends Collection<E>>
implements Iterable<E> {
/** Unmodifiable */
private final C raw;
@froop
froop / CollectionMapBuilder.java
Last active August 29, 2015 13:58
[Java] 同一Key単位にValueをCollection化したMap
/**
* 同一Key単位にValueをCollection化したMapを生成.
* @param <K> Key: キーの型
* @param <V> Value: 値の型
* @param <C> Collection: 値集合の型
*/
public abstract class CollectionMapBuilder<K, V, C extends Collection<V>> {
private final Map<K, C> map = new LinkedHashMap<K, C>();
/**
@froop
froop / ThreadSafeExecutor.java
Last active August 29, 2015 14:01
[Java] Apache Commons Exec のスレッドセーフ化
/**
* Apache Commons Exec の同時起動できない問題への対策.
* 同時に複数が実行開始されると、それら全ての実行完了が一番遅い実行を待ってしまう現象.
* 原因は、Runtime#exec() の呼び出しがマルチスレッドで競合しているため.
* Runtime の呼び出しを synchronized でロックすることで解消.
*/
class ThreadSafeExecutor extends org.apache.commons.exec.DefaultExecutor {
@Override
protected Process launch(CommandLine command, Map env, File dir)
@froop
froop / DatabaseLockReadTest.java
Last active August 29, 2015 14:01
[Java][DB] DerbyのTRANSACTION_READ_COMMITTEDはSELECTで待たされる
/**
* Derbyでは更新中の行をTRANSACTION_READ_COMMITTEDでSELECTしたときに待ちが発生する.
* OracleやMySQLでは待たずに更新前の情報を取得するので違う動作。DB2はDerbyと同じ?
*/
public class DatabaseLockReadTest {
private Connection lockedConn;
@Before
public void setUp() throws Exception {
setLocksWaitTimeout();
@froop
froop / 2StepPassword.html
Created August 6, 2014 02:14
[JS] 2-Step Password: パスワードを2段階にして覚えるのは単純な文字列で済むように http://blog.livedoor.jp/froo/archives/50906020.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>2-Step Password</title>
<script src="sha256.js"></script><!-- https://github.com/Caligatio/jsSHA -->
<script src="2StepPassword.js"></script>
</head>
<body>
@froop
froop / striping.md
Last active August 29, 2015 14:06
Microsoft Azure 上の Windows Server におけるディスク・ストライピングの性能調査

Microsoft Azure 上の Windows Server 2008 R2 仮想マシンに Oracle データベースを移行してみたところ、 ディスクへのIOが遅いために処理時間が移行前の2倍くらいかかった。

そこで、ディスクを追加して Windows OS の機能でストライピング (RAID 0) してみたのだが効果がなかった。 どうも、データベースはランダムアクセスが主のため向いていないようだ。

ベンチマーク結果

ディスク2台のストライピングでベンチマークを取ってみたところ、Random Read の性能が良くない。

@froop
froop / TriggerPolling.java
Created January 25, 2015 08:53
[Java] 別スレッドからのtrigger()をポーリングして待ち非同期に処理を実行
public class TriggerPolling implements Runnable {
private final Runnable handler;
private final int interval;
private final AtomicBoolean triggered = new AtomicBoolean();
private volatile boolean shutdown = false;
/**
* @param handler trigger()されたら実行される処理
* @param interval ポーリング間隔(ミリ秒)
*/
@froop
froop / FileRename.java
Created January 31, 2015 07:07
[Java] 指定ディレクトリ下全ファイルのファイル名と内容テキストを一括置換
public class FileRename {
private final Path srcDir;
private final Path destDir;
private final Iterable<RenamePattern> namePatterns;
private final Iterable<RenamePattern> contentPatterns;
private final Charset charset;
public FileRename(Path srcDir, Path destDir,
Iterable<RenamePattern> namePatterns, Iterable<RenamePattern> contentPatterns) {
this(srcDir, destDir, namePatterns, contentPatterns, Charset.defaultCharset());
@froop
froop / ParentURLSample.js
Created February 18, 2015 12:30
[JavaScript] URLの親階層を取得
function getParentURL(url) {
return url.replace(/[^/]*$/, "");
}
var url = location.href;
document.write(url + "<br>");
document.write(getParentURL(url) + "<br>");
@froop
froop / gist:962654
Created May 9, 2011 14:47
iαppliTool for Star-1.5 でリモートデバッグ
C:\iDKStar1.5\bin\star.exe -i .\bin\Test.jam -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000