メモ

関数合成の書きにくさ

ここまでに随分と紙幅をとってしまったが、もともとここから先を書きたかった。先に unique を示したが、重複を取り除く処理とともに、取り除かれる要素を取り出す処理を並べて書きたくなった。ナイーブに書けば、こうなるだろう。 function hoge(array) { c…

配列からの重複削除

JavaScript で、配列から重複した要素をとりのぞく処理は以下のように書ける(検索すると、たくさんヒットする)。 const unique = array => array.filter((value, index, self) => self.indexOf(value) === index); これは次のように使う: > unique([1, 3,…

ファーストクラス(第一級の〜)

関数がファーストクラスのオブジェクトである、などとスカした(かっこいい)言い方がある。言ってしまえば、関数が、関数の戻り値や引数として渡せる程度に特別扱いされている(逆か? 特別扱いされていない?)ということだ。

WinAuth 認証情報を別 PC に移植する

バッドノウハウ。 WinAuth の認証情報を複数 PC で共有したくなることがあるよね?1. エクスプローラーを開く 2. アドレスバーに %APPDATA% を入力して開く 3. WinAuth フォルダーをコピーする ネットワークに置くとか、 USB スティックに入れるとか、お好み…

Vue JS でのハマりポイント

template で置き換えられるトップレベルは一要素だけ template に内で参照する props や data は、テキストと属性とで指定方法が違う テキスト部分では {{ value-name }} 属性では v-bind:="value-name"

カプセル化

JavaScript でも Python でも '_' で始まるプロパティやメソッドは、そのファイルスコープ、あるいはオブジェクトのスコープだけで参照してください。これはキーワードで明示的アクセス制限できない言語で紳士協定として導入された名前規則です。尊重してく…

コールバック

「この処理は、こことそこで使いまわせるよね。差分を関数で渡して埋められるよう、コールバックで実装してもらえないか?」と振ったら、「コールバック?」と固まってしまったようなのでフォローした。そのときは、われながら教科書みたいな例を出せたんじ…

ZipFileの生存期間とyield

zip ファイルに格納されたオブジェクトを、その名前とデータのタプルの列に変換して、後で処理できるようにしたい、とおもってですね。イテレーターオブジェクトにしておけば、複数の zip ファイルを itertools.chain でつないで別の処理に回すことができる…

tar.gz から .deb をつくって Ubuntu に Oracle Java をインストール

Oracle Java の Linux 向け公式インストーラーは RPM と tarball との二択。 alian というパッケージ変換ツールを使うと RPM を DEB に変えられるというので Ubuntu で試してみたところ、インストール後のスクリプトで alternatives がないとエラーが(とい…

領域を固定パターンで埋める memfill

ある値で int 配列を埋めたい、構造体配列を初期化したい、なんて要求はざらにあるような気がするのだけれど、標準ライブラリーにはいってないのはなぜなんだぜ? 見たとおり、速度は O(log nmemb)。 void* memfill(void *ptr, const void *data, size_t siz…

Windows 共有を Linux から利用する

CIFS UTILS を使って Linux 上のディレクトリーにマウントする。 準備 1. CIFS UTILS をインストールする sudo apt-get install cifs-utils2. Windows 共有の認証情報を保存する cat > $HOME/.cifs-cred <

剰余をつかわない FizzBuzz

twitter で剰余演算をつかわずに FizzBuzz をどう実装するかというのを見かけて、それだったら…とつくってみたくなった。のでつくってみた。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if…

IBus-Anthy の日本語入力で、キーボードレイアウトを US に変える

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 スタートメニューの各プログラムで表示される「最近使ったもの」や、タスクバーの右クリックで開くジャンプリストの「最近使ったもの」。 とても便利に使っているんだけれど、移動した項目が残り続けて消えないだとか、なにやらわからない理由で表…

site パッケージや __future__ パッケージが見つからず python スクリプトが実行できない

先のエントリーと似た感じで、 Cygwin の話。 python スクリプトを実行するために python モジュールを入れたけれど、スクリプトを実行すると次のようなエラーが出て動かない。 'import site' failed; use -v for traceback Traceback (most recent call las…

別スレッドで動かす Handler

たいていの場合、 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>…

build.xml をもとにビルド結果の apk 名を決めて署名する Makefile

Android アプリケーションのビルドにコマンドラインツールである ant を使っている場合、署名しなければインストールできないし、いちいち署名するコマンドを入力するのも手間。複数のアプリを管理している場合はとくに。ということで build.xml からできあ…

Emacs で編集した subversion コミットメッセージのバックアップをやめる

ワーキングツリーに svn-commit.tmp~ がとっちらかって嫌になっていたので、ようやく重い腰をあげて対処。以下を ~/.emacs に追加。 (setq backup-enable-predicate '(lambda (path) (and (normal-backup-enable-predicate path) (let ((name (file-name-non…

Ubuntu の Eclipse で、ポップアップする API ヘルプの背景色が黒くて読みづらい問題の解決方法

Ubuntu 上で Eclipse を使っていて何が困るって、 API の説明文ポップアップが黒地に白テキストで読みづらいということ。 この黒地に白のポップアップを変更できたので、その方法を記録しておく。下は変更した後のスクリーンショット。 プラットフォームは U…

#ifdef 分岐を制御するプリプロセッサー定義の探索

由緒正しいソースコードをメンテナンスしていると、大量の #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 持てば、暮らしは立つ。」 たしかにそ…

VitualBox の NAT に割り振られるアドレスを変える方法

vboxmanage コマンドを使って次のように指定する。 この場合は NAT Gateway が 192.168.0.2、 NAT DNS は 192.168.0.3 になり、ゲスト VM のアドレスは(おそらくたぶん) 192.168.0.15 になる。 vboxmanage modifyvm --natnet1 "192.168/16" デフォルトでは…

GNU make での条件コンパイル

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…

map のダンプ

std::map を使っていたとして、この中身をコンソールに出力したくなる、そんな場面はたびたびあるとおもう。 で、 C++ 使いとしては、すらすらとこんな具合に書けるようになりたいよね。 typedef std::map<std::string, int> my_map_t; struct my_pair_t : my_map_t::value_typ</std::string,>…

static_assert

あたらしい 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 落としてから誉める。 逆はだめ。 たびたび聞くね、この方法。 無理やり子育てにからめておこう。 叱ったら、そのあとで誉める。 ちゃんと謝れたねとか、こうしたところは良かったねとか。ソーシャルメディアが急激に衰退する可能性:…