[Java,JNI]JNIでクラス検索するときのパッケージ名
OracleのJNIドキュメントに載っているサンプルプログラムを参考にして、Cからパッケージ名付きクラスのmainメソッドを呼びだそうとしたんだけど、うまくいかなかった話。 Java Native Interface Specification 5. The Invoca...
[シェルスクリプト]シェルスクリプトでの関数定義の記法
bashで関数を定義するには以下の3つの記法がある。 # 関数名() func1() { echo 'func1' } # function 関数名 function func2 { echo 'func2' } # functi...
[Apex]現在の会計年度を取得するApexコード
開発中のForce.comアプリで、Apexコードから現在の会計年度を取得する必要が出てきました。 Apexの標準クラスからで簡単に取れるかと思いきや、そんなものはないらしいので自分で実装することにしました。 例えばエス・ジーはSalesforceの会計年度設定で「会計...
[linux]そうだ、manpage作ろう
シェルスクリプトのようなコマンドラインツールを作成した時に使い方をreadmeファイルで提供することはよくある。 これをreadmeファイルではなく、もっとかっこよく提供したい。manやHTMLのように。 そんなときは、help2manを使ってみるといいかもしれない。 &...
[Python]内包表記と条件演算式
Pythonでの条件演算子の書き方を知らなかったので、面食らった話。 リスト内包表記で奇数の2乗を生成しようとすると以下になる。 >>> [ x ** 2 for x in xrange(10) if x % 2 != 0 ] [1, 9, 25, 49...
Salesforce Visualforce カスタムボタン
[Salesforce]カスタムボタンのエディタでPC・モバイル判定
作成したVisualforceページをカスタムボタンから表示するときに、 同じボタンからPC版とモバイル版(Salesforce1)で違うページを表示したい場合にどうしたらよいのか? と調べていたところ、全く出てこなかったのでメモ的な意味も含めて書いていく。 表示するページ...
[Java]引数で受け取った型でコレクションオブジェクトを生成したいけど
JavaのSetの要素を指定されたものだけ、別のSetに移す必要があったんだけど、指定要素を保持するSetが移動元のSetに存在しない要素も持っていたため、一時的なSetを作成する必要があった。 private static <T> void moveSe...
[SQLite]CでSQLiteのユーザ定義関数を作る その3
前回 はスカラー関数を作ったけど、SUMやAVGのような集約関数はどうなるだろうか。 今回は指定された列の行の値の積を返す関数を作ってみよう。 動作イメージ > select 3 foo union all select 4 foo union all selec...
[Visualforce]jQueryから簡単にVisualforceコンポーネントを操作しよう
Visualforceページの動的なUIの実装にJavascriptライブラリのjQueryを使用していますが、しばしばjQueryからVisualforceコンポーネントの要素を操作する必要が出てきます。 コンポーネント ID へのアクセスのベストプラクティス ...
[SQLite]CでSQLiteのユーザ定義関数を作る その2
その1 では拡張ライブラリのビルドをしてみたけど、今回は実際に自分で関数を作ってみる。 複数の引数を渡されるとそれらの積を返すスカラー関数を作ってみよう。 動作イメージ > select product(2, 3, 4); 24
[SQLite]CでSQLiteのユーザ定義関数を作る その1
SQLiteを使ったデータの統計処理なんかをしているとSQL側で処理できてしまうと楽なのになー、と思うケースがあったりする。 そういう時はSQLiteで使えるユーザ定義関数を作ってしまおう。 PHPやPythonで書く手段もあるようだけど、SQLite自体の仕組みを知るために...
[C]可変長引数の扱い。Cではどうするか?
可変長引数とオーバーロード その1 ではJavaで可変長引数を使う場合はメソッド呼び出しの都度、配列を生成するため、パフォーマンスに影響があるということを書いた。 でも、本質的にはJavaでは可変長引数も配列引数も同様の扱いだった。 なので、以下のように配列を可変長引数に渡...
[linux]Linuxでキャッシュをクリアする
grepのようにファイルを読み込む処理の実行速度を計測するときに1つ気をつけなくちゃいけないことがある。 同じファイルに対する操作を2回、3回と続けるとファイルの内容がメモリにキャッシュされて1回目と比べて、処理が速くなることがあるからだ。 これはどちらの処理結果が正しいと...
[unix]ファイル名しか受け付けないコマンドで標準入出力を使う方法
Unixでフィルタ的な動きをするコマンドはたいてい標準入力と標準出力を扱えるけど、独自に作成されたツールでコマンド引数にファイル名しか受け付けないようなものもある。 そんなコマンドに対して前段後段の処理を実施する場合は一時的にファイルを作ることが考えられるだろう。 でも、パイ...
[Java]可変長引数とオーバーロード その2
可変長引数とオーバーロード その1 ではEnumSetのofメソッドに可変長引数と引数1〜5個までのオーバーロードがあるのを見た。 もう一つ、可変長引数で注意しなければいけないのは以下のようなケースだ。 java.io.PrintStream::printfメソッドのように...
[Java]可変長引数とオーバーロード その1
お互いに排他的ではない複数の条件がある場合、従来から用いられてきた方法としては複数のビットフラグを用いる方法がある。 enum.c #include enum Color { Color_Red = 1, Color_Green = 2, C...
[unix]sleepとusleep
Linuxから他のunixにシェルスクリプトを持っていって、動かないなんてことはたまにある。 例えば、usleepコマンドを使っているスクリプトをBSD系のunixに持っていくとusleepがなくて、動かなかったりする。 Linuxでもモノによってはusleepが初めからは...
[シェルスクリプト]シェルスクリプトで関数を使い分ける
シェルスクリプトはインタプリタで1行ごとに順に解釈されていくから、関数を実行する前にその関数の定義が登場しなければいけない。 それはいいんだけど、本当に "実行する前に" ということがどういうことか、ちゃんと分かってなかった。 以下のようにfunc1から...
[SQL]SQLでHello, world?
SQLでHello, world.って言ったら、すぐに思いつくのはこんな感じだろうか。 SELECT 'Hello, world.'; いくつかのDBMSではこれでうまくいく。 でも、OracleだとFROM句がないとおこられちゃうよね。
[SQL]with句の効用
[SQL]SQLの共通表式 ではSQLのwith句でテストデータの生成ができるってことを書いたけど、それ以外にもwith句には効用がある。 ・サブクエリにコメントを付けておこう。 SQLだと他のソースコードに比べて、コメントがおろそかになっていることが多いけど、サブクエリ毎...
[C]オペークポインタ
「いくつかの言語でフィボナッチ数生成」を考える。 ではハンドルに配列そのものを使っていたけど、CのAPIでハンドルを使う場合はオペークポインタにすることが多いよ。 「いくつかの言語でフィボナッチ数生成」を考える。 の結果をオペークポインタを使ったものに変えてみよう。 まずは...
[Java]Mapのループ
JavaでMapをループする時に、なんとなしにkeySetを使ったりしていた。 MapIterate1.java import java.util.HashMap; import java.util.Map; class MapIterate1 { public ...
[bash]キャリッジリターンの使いどころ
Unixの改行コードはLFでWindowsの改行コードはCRLFだ、なんていう話はよく出てくる。 CR(carriage return)というのは本来、現在位置を行の先頭に戻すだけで次の行には進まない。 LF(line feed)は逆に行中の位置は変えずに現在位置を次の行に...
[C]「いくつかの言語でフィボナッチ数生成」を考える。
[awk,Ruby,C#,Java]いくつかの言語でフィボナッチ数生成 はいくつかの言語でフィボナッチ数を生成したけど、なんだか必要以上に複雑になってしまった。 こんなんじゃダメなんだろうか?
[awk,Ruby,C#,Java]いくつかの言語でフィボナッチ数生成
[SQL] SQLの共通表式 ではSQLでフィボナッチ数を生成した。 [python] ジェネレータとイテレータでフィボナッチ ではMizu A.さんにPythonでフィボナッチ数を生成してもらった。 調子に乗って、いくつかの言語の特徴的な機能を使ってフィボナッチ数を生成して...
[bash]Bashでステップ実行
シェルスクリプトでステップ実行できたら、と思ったことないですか。 僕はあるよ。 と思っていたら、ここで素晴らしい説明をしてくれていた。 Shellスクリプトをデバッグ(ステップ実行)する DEBUG擬似シグナルをtrapして、readで待てばいいんだね。
[Java][C]JavaのvolatileとCのvolatile
Javaでvolatileを使う場面は限られてくるけど、マルチスレッドの処理でパフォーマンスが問題になってくるようなときに使う。 通常のロックでは処理が重くなってしまうような場合だね。 VolatileSample.java import java.util.stream...
[SQL] SQLで素数生成 existsとcaseの巻
前回はSQLフィボナッチ数列を生成した けど、調子に乗って、SQLで10000までの素数を生成してみた。 with句は整数列の生成のみに利用して、素数判定自体はSQLらしく非手続き的にするとこんな感じ。 prime.sql with prime(p) as (sele...
[SQL] SQLの共通表式
SQLの共通表式(CTE: common table expressions)が結構便利だけど、構文を忘れがちなのでメモ。 以下のようにWITH句の中にSELECT文を書くと、その直後のSELECTでビューのように参照できる。 名前付きの副問い合わせだと思うとわかりやすいか...
[C] restrict修飾子
Cのstrict aliasingについて ではポインタのエイリアシングを見たけど、C99では明示的に異なる領域を指していることを示すためにrestrict修飾子が導入されている。 # 残念ながらrestrictはC++では導入されていない。なので、これを使うとC++とは互換...
[C] Cのstrict aliasingについて
[C] Cで10進小数を使う方法 でdecNumberを紹介したけど、そのドキュメントの中にこんな記述があった。 http://speleotrove.com/decimal/dnmods.html The modules all conform to some gen...
[Raspberry Pi]ラズパイでLチカ(6)
さぁ、フルカラーLEDで色を変えるぞ! とおもったんですが。raspbianの4.1.19にはnode.js(version 0.10.29)が搭載されている様子だったので、前回の手動PWMをnodeでやってみる。 (もちろん、PWM用のライブラリは存在するのですが、今回もハンド...
[Raspberry Pi] ラズパイでLチカ(5)
さて、前回はラズパイから少し離れて電池でLEDを光らせてみたわけですが、今回はラズパイでその制御をやってみようと思います。 何は無くともラズパイのGPIOの制御の仕方を見ていかなくてはいけませんね。 GPIOピンはラズパイのバージョンアップと共に増えているので、ご自分のラズパイに...
[C] Cで10進小数を使う方法
CでJavaのBigDecimalのような10進小数を扱えるライブラリはないかなと探していたのですが、decNumberというのがありました。 The decNumber Library http://speleotrove.com/decimal/decnumber.ht...
[python] ジェネレータとイテレータでフィボナッチ
イテレータバージョン << fib_iter.py >> class Fib ( object ): def __init__ (self, n): self.x_2, self.x_1 = 0 , 1 ...
[Raspberry Pi]ラズパイでLチカ(4)
今回は、一度ラズパイから離れてLEDを制御する回路側を設計していきます。 まず、今回はフルカラーLEDを使います。フルカラーLEDは何のことはない、光の三原色のLEDが束になったLEDです。
[Raspberry Pi]ラズパイでLチカ(3)
さて、ご希望のディストリビューションはインストールできたでしょうか? 一番オーソドックスなRasbianだと、インストールして起動するとX window systemが実行されるので、HDMIでディスプレイを繋いでいればGUIで操作できると思います。 Et...
[Raspberry Pi]ラズパイでLチカ(2)
ではまず、起動用SDカードを作成します。 どのホストOSでも、以下の流れです。 1. イメージファイルの入手 2. イメージファイルをSDカードに書き込む イメージファイルというのは、ディスクの中身を(管理情報なども含んで)まるごとファイルにしたもの...
[unix]ctrl-dとctrl-cについて
インタラクティブに標準入力から読み込むコマンドを終了させるのにctrl-dを押すやり方とctrl-cを押すやり方がある。 例えば、bcコマンドの場合、以下のようになる。 $ bc -q (ここでctrl-dを押す) $
[ブログ] google-code-prettifyの参照先
いつの間にかブログのソースコードのシンタックスハイライトがされなくなってた。 google-code-prettifyの参照先URLが変わっていたみたい。 ので、ヘッダ内の以下を変更。 旧: <script src="https://google-co...
[unix]シェルスクリプトの終了ステータス
シェルスクリプトを作成しているときに毎回、終了ステータスをどうするか迷っていたんだけど、正常終了時は0、異常終了時は0以外くらいにしか考えてなかった。 では、どうするのがいいんだろうか。 まず、1と2はユーザ定義としては使わないほうがいいみたい。 Advanced Ba...
[Raspberry Pi]ラズパイでLチカ(1)
だいぶ市民権を得てきた、Raspberry Piだと思ってたんですが、まだまだ知名度低いみたいですね。 左がRaspberry Pi 1 Model B 右上がRaspberry pi 2 Model B 右下がRasberry pi 3 Model B ...
[Java]equalsメソッドと継承
Javaのequalsの実装でふと迷ったことがあった。 以前にも equalsメソッドをオーバーライドするときにテストするべきこと を書いたけど、 そのときは比較対象のオブジェクトが自分と同じクラスかどうかのチェックには触れなかった。 instanceof演算子で比較する...
[linux] sshでコピー
teratermには、いつのバージョンからかは知らないが ssh scpというメニューコマンドができている。 linuxでも、sshができればscp相当のコピーはできる。 local -> remote ssh user@remote dd of=r...
[bash]bashでターミナルに色つき文字を出力
bashでターミナルに色つき文字を出力するときの方法をあまりよくわかっていなかったので、復習。 例えば、以下のようにすると"青です"の文字がブルーで出力される。 $ echo -e "\033[34m青です\033[39m" 青で...