それわかるぅ〜

日々「それわかるぅ〜」と思ったこと、忘れたくないことを徒然なるままに。Inputした情報を定着させるためのOutputの場として使用しています。誤字脱字等はたぶん仕様です。

プログラミング関係

JavaScriptのfor〜in文は値渡しである

タイトル通りJavaScriptのfor in文の値渡しについて、注意点をメモ。 var a = 1; var b = 2; var c = 3; var arr = [a, b, c]; var func1 = function(inputArr){ for(var n in inputArr){ n = 999; } }; func1(arr); console.log(arr); //出力は[1, 2, 3] fo…

dist_not_existsとdist_exists_or (ソフトウェアの基礎、Coq)のメモ

存在証明が絡むとややこしくなったのでメモ (** **** Exercise: 1 star (dist_not_exists) *) (** Prove that "[P] holds for all [x]" implies "there is no [x] for which [P] does not hold." *) Theorem dist_not_exists : forall (X:Type) (P : X -> Pr…

Coqの帰納的命題定義の型

ちょっと複雑だったのでメモ. Coqで帰納的に命題を定義する. 例: 自然数nは自然数m未満である. Inductive It : nat -> nat -> Prop := | It1 : forall n:nat , (It (S O) (S n)) | It2 : forall n:nat m:nat , (It n m) -> (It (S n) (S m)). とする. このと…

false_beq_nat (ソフトウェアの基礎、Coq)のメモ

Coqの帰納法を忘れかけてたのでメモ (** **** Exercise: 2 stars (false_beq_nat) *) Theorem false_beq_nat : forall n m : nat, n <> m -> beq_nat n m = false. Proof. intros n. unfold not. induction n as [ | n']. - intros m H (**ここでmをintros**…

emacsとAtomのキーバインドを自分好みにカスタマイズする

emacsとAtomのキーバインディングを自分用に割り当てる方法です. emacsのショートカットキーでコードの整形を行うC-M-\ってのが有りますけど、Macだとなぜかコマンドでバックスラッシュが入れられなくて困ってた. というわけで、これを書き換えます. 現在の…

MacでのAndroid端末のファクトリーイメージの焼き方、ダウングレードの方法 

Android端末のファクトリーイメージを焼く機会があったのですが、その時に少し苦労したので 今後のためにここにまとめておくこととします。 実際に僕はMacを使ってリリースされたばかりのAndroid 6.0のマシュマロのファクトリーイメージをNexus5にインストー…

Macのsed

先日シェルスクリプトをかじってみたらターミナルのコマンド"sed"の扱いがMacだけちょっと違うというかちょっと違ったコマンドがインストールされているみたいなので忘れないように書いておく。 sed -i '' 's/絢瀬絵里/南條愛乃/' hogehoge.txt これでhogeho…

コンパイラ作成のメモ書き

実験でコンパイラを作成した過程で必要になった事項を適当にまとめておく。 関数フレームとは実験で使う仕様に変更して書いてあるので一般的なものとすこし仕様が違うからちょっと注意。あと最後に例が少なくて本当に苦労したので実際のプログラムをアセンブ…

MacでのJDKのバージョンを簡単に切り替える方法

前からJDKは1.6を使っていたんだけれども半年ほど前に1.8に変えたらなんかバッテリーの減りが異常に早かったのでよく調べてみたら、どうやらJDKのバグで1.7とか1.8はバッテリーの減りが早くなるとのこと。それでいままでずっと1.6を使ってきたんだけども今回…

Racketのeq? とequal?の違いについて

バグ探しで1時間ぐらい無駄にしたのでもう懲り懲りなのでここに書いておく。 そもそもこのまえコードをTAの方に見せたときに、「そういえば私もよく覚えてないんだけどeq?とequal?の違い分かってる??」って聞かれて、その時は適当に「えーっと、、評価結果…

Racket言語におけるconsとlist*、listの違い

学校の授業では嫌になるほどRacketでコードを書いていたけど、今日久々にlet*に遭遇してすっかり忘れていることに気づいた。 まとめておくと (list 1 2 3) は (cons 1 (cons 2 (cons 3 '()))) になって、 (list* 1 2 3) は (cons 1 (cons 2 3)) になる。 ち…