ヘッドフォンのイヤーパッドを交換しました。
買ったのは 2016年の12月頃だったので、2年9ヶ月くらい経ってます。
古いイヤーパッドは、写真を撮るのを忘れて捨ててしまったのですが、グレーの表皮は剥がれ、その中の黒い布も破れて、中のスポンジが見えてきたので、限界を感じて変えました。
純正のイヤーパッドも売っていますが、今回はケチって互換品を買ってみました。
どれくらい保つのか興味津々です。
私が最初に読んだオプジェクト指向プログラミングの本です。よくあるオブジェクト指向の本は、特定の言語やフレームワークに特定して語られるものが多く、偏った見方のものが多いと思います。しかし、この本では、4つの言語を使用し、それぞれの言語で書かれたサンプルコードを提示したり、同じ機能に対してそれぞの言語のアプローチの違いや、実装の違いなどの解説しています。特定の言語やシステムに偏ることなく、オブジェクト指向本来の概念や思想について書かれている良書です。
最初に買ったのは第一版で、出版されたのは1995年でした。その当時 Java はまだ生まれたばかりなので、サンプルコードの言語に入っていませんでした。その後、第二版を買ったのですが、Objective-Pascal が外され、代わりに Java が入ってきました。原書は第三版が出ているようですが、まだ日本語訳は出ていないようです。
中島聡さんのメルマガを購読していますが、Google I/O に参加した成果として、Firebase の良さを知ったとのこと。
今までは、サーバー側のシステムを作るのに、別の人に頼まないといけなかったのが、自分でサクサクと作れてしまうらしい。
早速、以下のようなゲームのサービスを作って見たとのこと。
https://tourneygames.com/play/be7eMqKVNtydv0mJrUah
今まで、自分で作るアプリはサーバーが不要なものだけだったけど、これでサーバー側もいけるかも。
ちょっと調べてみよう。
借りて読んだので、気になった箇所を簡単にまとめました。
基本的に Web アプリケーション向けの内容なのですが、随所に他のシステムでも役に立ちそうな Tips が入ってます。
某所で5分以内にプログラムを考えるという課題がありました。
最初にプログラミング言語を選択するのですが、最近は swift ばかりなので swift を選択しました。
その後に出たお題は「文字列を逆順にする。ただし、プログラミング言語にある逆順にする命令などは使わないこと」というものです。
そこで私の思考は、以下のようになりました。
IDEなしだったので、仮想コードですが、以下のような感じに書きました。
let src = "hogemoge" var dest = "" for char in src { dest.insert(0, char) }
しかし、帰りの電車で、C言語ならもっと効率良くできることに気づきました。
unsinged char *src = "hogemoge"; unsigned char swap; for (int i = 0, int last = strlen(src) - 1; i < strlen(src) / 2; i++, last--, ) { swap = src[i] src[i] = src[last] src[last] = swap }
なぜ、思いつかなかったのだろうと考えたのですが、最初に言語を選択していたため、そこでよく使う手法に囚われていたのです。swift だと文字列を文字単位で扱うことはあまりないため、配列として処理しようと考えてしまったのです。それに対してC言語はビット単位やバイト単位で扱うことが多いので、すんなりと効率が良いアルゴリズムに導かれたのでした。
「オブジェクト指向プログラミング入門 第二版 (ティモシイ・A. バッド)」の「1.2 言語と思考」にも、APLのプログラマが行列のソートで解決した話が載っていましたが、まさにその通りのことを身を以て体験したのでした。