2016年12月5日月曜日

[linux]そうだ、manpage作ろう

シェルスクリプトのようなコマンドラインツールを作成した時に使い方をreadmeファイルで提供することはよくある。
これをreadmeファイルではなく、もっとかっこよく提供したい。manやHTMLのように。

そんなときは、help2manを使ってみるといいかもしれない。
'help2man' Reference Manual

help2manは任意のコマンドに"--help","--version"オプションを与えて起動して、標準出力の内容からmanファイルを生成してくれる。

例えば、catコマンドのmanを作りたければ、以下のようにする。

$ help2man -o cat.1 cat

2016年11月28日月曜日

[Python]内包表記と条件演算式

Pythonでの条件演算子の書き方を知らなかったので、面食らった話。

リスト内包表記で奇数の2乗を生成しようとすると以下になる。
>>> [ x ** 2 for x in xrange(10) if x % 2 != 0 ]
[1, 9, 25, 49, 81] 

それに対して、偶数の場合はそのまま、奇数の場合は2乗を生成しようとすると以下になる。
>>> [ x ** 2 if x % 2 != 0 else x for x in xrange(10) ]
[0, 1, 2, 9, 4, 25, 6, 49, 8, 81]

2016年11月24日木曜日

[Salesforce]カスタムボタンのエディタでPC・モバイル判定

作成したVisualforceページをカスタムボタンから表示するときに、 同じボタンからPC版とモバイル版(Salesforce1)で違うページを表示したい場合にどうしたらよいのか?
と調べていたところ、全く出てこなかったのでメモ的な意味も含めて書いていく。

表示するページを切り替えたいと思った場合、多くの方はクッション用のVisualforceページを作成し、
その中でPC用ページとモバイル用ページの呼び出しを切り替えようと考えるのではないかと思う。

しかし、今回はクッションページを作るのが面倒というのに加えて、 カスタムボタンのURLパラメータを本命のページで使用したかったので カスタムボタンでモバイルの判定をしてしまおうと考えた。

2016年11月21日月曜日

[Java]引数で受け取った型でコレクションオブジェクトを生成したいけど

JavaのSetの要素を指定されたものだけ、別のSetに移す必要があったんだけど、指定要素を保持するSetが移動元のSetに存在しない要素も持っていたため、一時的なSetを作成する必要があった。
    private static <T> void moveSet(Set<T> destSet, Set<T> srcSet,
                                    Set<T> targetSet) {
        Set<T> s = new HashSet<>(targetSet);
        s.retainAll(srcSet);
        destSet.addAll(s);
        srcSet.removeAll(s);
    }

2016年11月14日月曜日

[SQLite]CでSQLiteのユーザ定義関数を作る その3

前回はスカラー関数を作ったけど、SUMやAVGのような集約関数はどうなるだろうか。
今回は指定された列の行の値の積を返す関数を作ってみよう。

動作イメージ
> select 3 foo union all select 4 foo union all select 5 foo;
3
4
5
> select product(foo) from (select 3 foo union all select 4 foo union all select 5 foo);
60

2016年11月9日水曜日

[Visualforce]jQueryから簡単にVisualforceコンポーネントを操作しよう

Visualforceページの動的なUIの実装にJavascriptライブラリのjQueryを使用していますが、しばしばjQueryからVisualforceコンポーネントの要素を操作する必要が出てきます。

コンポーネント ID へのアクセスのベストプラクティス

上のガイドにあるように$Componentグローバル変数でJavascriptからコンポーネントIDを取得することができます。
ただこの方法だと、例えばスクリプトをソースコードの上部や下部にまとめて記述して管理したい時などは、DOMの階層構造を意識して変数指定しないといけないので、意外と面倒です。

2016年11月7日月曜日

[SQLite]CでSQLiteのユーザ定義関数を作る その2

その1では拡張ライブラリのビルドをしてみたけど、今回は実際に自分で関数を作ってみる。
複数の引数を渡されるとそれらの積を返すスカラー関数を作ってみよう。

動作イメージ
> select product(2, 3, 4);
24