Skip to content

Instantly share code, notes, and snippets.

@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 / 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 / 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 / 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 / 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 / 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 / TopologicalSorter.java
Last active December 25, 2015 08:19
[Java] 深さ優先探索によるトポロジカルソート
/**
* 深さ優先探索によるトポロジカルソート.
* 参考: http://ja.wikipedia.org/wiki/トポロジカルソート
* @param <T> ノードキーの型
*/
public class TopologicalSorter<T> {
private final Map<T, Set<T>> nodes;
private final List<T> result;
/** 訪問済のノードキー群 */
private final Set<T> visited;
@froop
froop / proposal.md
Last active December 18, 2015 03:29
デスクトップアプリケーションのWeb化提案

デスクトップアプリケーションの Web 化提案

2層アーキテクチャーのクライアント・サーバーシステムである Windows デスクトップアプリケーションを、Web アプリケーション(ブラウザ上で動作するアプリケーション)として再構築することを提案致します。

近年の Web アプリケーションは、デスクトップアプリケーションと遜色のない操作性を持てるようになっています (例: Google Docs, Gmail)。Web 化により、操作性は現状の水準を維持したまま、Web の利点(費用の削減、技術リスクの低減、環境変化への素早い対応など)を取り込むことができます。

Web 技術の現在

@froop
froop / ng.html
Last active December 16, 2015 20:39
[jQuery] チェックボックスへの attr("checked", x) が1回目しか効かなくて数時間悩んだ。なぜか <!DOCTYPE html> を消すと直る。 結局、attr() を prop() に変えたら問題なくなった。 val([x]) でも OK。
<!DOCTYPE html>
<head>
<meta charset="UTF-8" />
</head>
<body>
<div>
<input name="check1" type="checkbox" value="on">
<button id="check-on">on</button>
<button id="check-off">off</button>
@froop
froop / js-template-memo.md
Last active November 13, 2019 04:56
JavaScript テンプレートエンジン vs DOM 直接操作

JavaScript テンプレートエンジン vs DOM 直接操作

Backbone.js とかで JavaScript で MVC してるサンプルとかを読んでいると、 HTML の可変部分はテンプレートエンジンの使用が推奨されているようだが (例: http://backbonejs.org/docs/todos.html )、 サーバー側と違ってクライアント側では DOM 操作ができるので、わざわざテンプレートエンジン使ってテキストベースでやるよりも、 DOM を jQuery で直接操作した方が分かりやすいんじゃないかと思った。

デザイナーが HTML、プログラマー が JavaScript と担当者を分ける場合には便利なのかな。