メモ
ここまでに随分と紙幅をとってしまったが、もともとここから先を書きたかった。先に unique を示したが、重複を取り除く処理とともに、取り除かれる要素を取り出す処理を並べて書きたくなった。ナイーブに書けば、こうなるだろう。 function hoge(array) { c…
JavaScript で、配列から重複した要素をとりのぞく処理は以下のように書ける(検索すると、たくさんヒットする)。 const unique = array => array.filter((value, index, self) => self.indexOf(value) === index); これは次のように使う: > unique([1, 3,…
関数がファーストクラスのオブジェクトである、などとスカした(かっこいい)言い方がある。言ってしまえば、関数が、関数の戻り値や引数として渡せる程度に特別扱いされている(逆か? 特別扱いされていない?)ということだ。
バッドノウハウ。 WinAuth の認証情報を複数 PC で共有したくなることがあるよね?1. エクスプローラーを開く 2. アドレスバーに %APPDATA% を入力して開く 3. WinAuth フォルダーをコピーする ネットワークに置くとか、 USB スティックに入れるとか、お好み…
template で置き換えられるトップレベルは一要素だけ template に内で参照する props や data は、テキストと属性とで指定方法が違う テキスト部分では {{ value-name }} 属性では v-bind:="value-name"
JavaScript でも Python でも '_' で始まるプロパティやメソッドは、そのファイルスコープ、あるいはオブジェクトのスコープだけで参照してください。これはキーワードで明示的アクセス制限できない言語で紳士協定として導入された名前規則です。尊重してく…
「この処理は、こことそこで使いまわせるよね。差分を関数で渡して埋められるよう、コールバックで実装してもらえないか?」と振ったら、「コールバック?」と固まってしまったようなのでフォローした。そのときは、われながら教科書みたいな例を出せたんじ…
zip ファイルに格納されたオブジェクトを、その名前とデータのタプルの列に変換して、後で処理できるようにしたい、とおもってですね。イテレーターオブジェクトにしておけば、複数の zip ファイルを itertools.chain でつないで別の処理に回すことができる…
Oracle Java の Linux 向け公式インストーラーは RPM と tarball との二択。 alian というパッケージ変換ツールを使うと RPM を DEB に変えられるというので Ubuntu で試してみたところ、インストール後のスクリプトで alternatives がないとエラーが(とい…
ある値で int 配列を埋めたい、構造体配列を初期化したい、なんて要求はざらにあるような気がするのだけれど、標準ライブラリーにはいってないのはなぜなんだぜ? 見たとおり、速度は O(log nmemb)。 void* memfill(void *ptr, const void *data, size_t siz…
CIFS UTILS を使って Linux 上のディレクトリーにマウントする。 準備 1. CIFS UTILS をインストールする sudo apt-get install cifs-utils2. Windows 共有の認証情報を保存する cat > $HOME/.cifs-cred <
twitter で剰余演算をつかわずに FizzBuzz をどう実装するかというのを見かけて、それだったら…とつくってみたくなった。のでつくってみた。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if…
Ubuntu 13.10 にアップグレードしたら日本語入力が日本語配列強制になって難儀していた*1。 ちょっと検索して「キーボード配列は変えられない、クソが!」というエントリーを見てしまったので諦めていたのだけれど、変えられました!コントロールパネルから …
アクションバーに「リフレッシュ」ボタンをつけようとして、次のようなメニューリソースを書いた。 <item android:id="@+id/action_refresh" android:icon="@android:drawable/ic_menu_refresh" android:showAsAction="always" android:title="@string/action_refresh"/> すると "error: Error: Resource is not public. (at 'icon' with value '@android:drawable/ic_menu_re…</item>
ファイルのリストが手元にあって、これらがぜんぶ同じことを確かめたい、ということがあって。いま。 リストの中の任意のふたつを取って組み合わせをつくるってことか。ううーん… foo f (x:xs) = map (f x) xs ++ foo f xs foo _ _ = [] main = do cs <- get…
Windows 7 スタートメニューの各プログラムで表示される「最近使ったもの」や、タスクバーの右クリックで開くジャンプリストの「最近使ったもの」。 とても便利に使っているんだけれど、移動した項目が残り続けて消えないだとか、なにやらわからない理由で表…
先のエントリーと似た感じで、 Cygwin の話。 python スクリプトを実行するために python モジュールを入れたけれど、スクリプトを実行すると次のようなエラーが出て動かない。 'import site' failed; use -v for traceback Traceback (most recent call las…
たいていの場合、 Handler を定義するときは UI スレッドを Looper として使う。この場合 Looper を明示的に渡す必要はなく、だから Handler が外側のクラスになる。 class Foo { private static final class MyHandler extends Handler { @Override public …
support.NavUtils を使う場合(正攻法?) manifest の当該 activity 要素に meta-data 要素を追加する。 value は親にしたい(ナビゲーションバーのホーム押下時の戻り先)アクティビティのクラス名。 <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="*親アクティビティの完全修飾クラス名*" /> onCreate() に、アクションバーのホーム押下を有効に</meta-data>…
Android アプリケーションのビルドにコマンドラインツールである ant を使っている場合、署名しなければインストールできないし、いちいち署名するコマンドを入力するのも手間。複数のアプリを管理している場合はとくに。ということで build.xml からできあ…
ワーキングツリーに svn-commit.tmp~ がとっちらかって嫌になっていたので、ようやく重い腰をあげて対処。以下を ~/.emacs に追加。 (setq backup-enable-predicate '(lambda (path) (and (normal-backup-enable-predicate path) (let ((name (file-name-non…
Ubuntu 上で Eclipse を使っていて何が困るって、 API の説明文ポップアップが黒地に白テキストで読みづらいということ。 この黒地に白のポップアップを変更できたので、その方法を記録しておく。下は変更した後のスクリーンショット。 プラットフォームは U…
由緒正しいソースコードをメンテナンスしていると、大量の #ifdef 分岐に泣かされることが、よくある。よし、ソースコードや Makefile で定義されているプリプロセッサー(つまり #define や -D オプション)をあらかじめ列挙しよう! そうだ、分岐に使われ…
シェルスクリプトで、実行のために必要な環境変数が定義されていることを確認するために、こんなしかけを書いてみた。 for n in VERSION WORKDIR SDKROOT TARGET KEY; do if ! [ $(eval echo "$"$n ]; then echo "ERROR: missing environment '$n' (at ${0})…
主張はわかりやすいし、説得力も、まあ、あるとはおもう。 ただ、きっと食い合いになっちゃうなあ… という気がして、こちらの生き方を選択はできないなあといったところ。 「月に三万円稼ぐことのできる小さな仕事を 10 持てば、暮らしは立つ。」 たしかにそ…
vboxmanage コマンドを使って次のように指定する。 この場合は NAT Gateway が 192.168.0.2、 NAT DNS は 192.168.0.3 になり、ゲスト VM のアドレスは(おそらくたぶん) 192.168.0.15 になる。 vboxmanage modifyvm --natnet1 "192.168/16" デフォルトでは…
twitter に垂れ流したものは流れさってしまって残らないので、拾ってまとめなおしておく。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.create…
std::map を使っていたとして、この中身をコンソールに出力したくなる、そんな場面はたびたびあるとおもう。 で、 C++ 使いとしては、すらすらとこんな具合に書けるようになりたいよね。 typedef std::map<std::string, int> my_map_t; struct my_pair_t : my_map_t::value_typ</std::string,>…
あたらしい C 言語規格 C1X では、コンパイル時に評価可能な静的表明をソースコードに埋めておけるらしい。 うらやましい。 https://www.securecoding.cert.org/confluence/display/seccode/DCL03-C.+Use+a+static+assertion+to+test+the+value+of+a+constan…
出世ナビ|NIKKEI STYLE 落としてから誉める。 逆はだめ。 たびたび聞くね、この方法。 無理やり子育てにからめておこう。 叱ったら、そのあとで誉める。 ちゃんと謝れたねとか、こうしたところは良かったねとか。ソーシャルメディアが急激に衰退する可能性:…