Androidアプリがフォアグラウンドでもバックグラウンドでも、通知を受け取った後にそれを表示するかどうかをアプリ内で判断させたいときは Firebase の data message を送る必要がある。 FirebaseコンソールからはNotification Composerを使って、notificati…
自分で理解するために ViewModel | Android Developers (原文) を訳しました。 サンプルコードや図を全て写していないので、原文を見ながら適宜理解を深めるのに利用してください。また、理解しやすいよう所々補足を加えています。先にアクティビティの実行…
BitcoinはP2P通信技術を利用している。Bitcoinネットワークに参加する各ノードはクライアントとしてもサーバーとしても動作し、データの生成と送受信を行う。各ノードが持つデータはほとんど同じである。(常にノード間でブロックとトランザクションをやり取…
Bitcoin: 非中央集権型の電子通貨。非中央集権型とは、銀行などの信頼された金融機関が取引に関与しないことをさす。金融上の取引を行う際、銀行の役割は支払い者に支払いの能力があることと、取引が不正ではないことを保証することである。Bitocinは、その…
アルゴリズムを評価できるように、計算量(ランダウの記号)について調べた。 アルゴリズムの評価 アルゴリズムは、実行に必要な資源の量で評価される。 資源とは、実行にかかる時間と使用するメモリ領域を指す。一般的には資源が少ない方が評価が高いが、計算…
Goのプレイグラウンドで遊んでたら、フロー制御の章でニュートン法を使って平方根を求めましょう( A Tour of Go )と言われたので調べた。 ニュートン法とは? ニュートン・ラフソン法(Newton-Raphson method)ともいう。 与えられた関数についてになるの近似…
speakerdeck.com
ログインシェルをbashから、zshellに変更した。brewでzshをインストール。 $ brew install zsh ... ... $ which zsh /usr/local/bin/zshシステムで有効なログインシェルの一覧を、/etc/shellsで見ることができる。 ログインシェルとは、ユーザーがシェルに…
忘れちゃうのでメモ。 $ rails _5.0.0.beta3_ new AppName $ pry _0.9.12.2_ pryのバージョンを確認したいとき でできます。
Rubyで MyClass.class # => Class MyClass.class.class # => Class という結果に Σ(・∀・;) となったので調べた。 (.classはオブジェクトが定義されたクラス名を返す。) まとめ Rubyでは、定義されたクラスは全て、Classクラスのインスタンスとなる。 Rub…
キーバインドのデフォルトで C-h がHELPの設定になっていたので、 ~/.emacs.d/init.el ファイルに下記マクロを追加。シンタックスはemacs lisp. (keyboard-translate ?\C-h ?\C-?) Function: keyboard-translate from to この関数は、文字コードfromを文字コ…
引数を複数とる関数から、いくつかの引数を固定値で束縛した新たな関数を生成する。これにより、関数を使うたびに同じ値の引数を入力する手間が省け、見た目も簡潔なプログラムになる。 カリー化とは、複数の引数を取る関数を、1つの引数のみを取る関数のチ…
jsのthisは、ある関数が呼び出されたときに、その関数を格納していたObjectを指す。 js how does "this" work? 関数を単にfunc();という形で単体で実行した場合、thisにはwindowが入る。 new演算子のthis jsのnewは任意の関数と一緒に呼び出すことができる。…
jsは(ES6より前は)クラスを持たないオブジェクト指向言語である。クラスの代わりに、プロトタイプというプロパティを作り、そのプロパティを複数のインスタンスで共有する。そのためプロトタイプベースのオブジェクト指向言語といわれている。 jsの全てのオ…
jsが持つ関数スコープを利用してクロージャー(関数閉包)を書くことができる。 js closure 上記の例では、関数countの中のローカル変数iを参照できるのは、無名関数が入っている変数xを実行したときのみである。変数iをグローバル変数にすると他の関数からの…
jsのローカルスコープは関数内のみを参照できることであり、グローバルスコープはscriptのどこからでも参照できることを指す。ローカルスコープを持つ変数をローカル変数、グローバルスコープを持つ変数をグローバル変数という。 スコープは変数が定義された…
jsはプロトタイプベースのオブジェクト指向言語と呼ばれているが、関数型言語の性質も持ち合わせている。 第一級オブジェクト(first-class object)と第一級関数(first-class function) 第一級オブジェクトとは、プログラムにおいて、生成、代入、演算、(引…
MVCアーキテクチャのはじまり MVCアーキテクチャは、ソフトウェアの構成と役割について言及した概念のひとつ。1978年にXerox Parc(パロアルト研究所)のTrygve Reenskaugが、Smalltalk-76で使われているMVCモデルについて紹介したのが始まりと言われている。T…
オブジェクト指向とは、属性と振る舞いを持つオブジェクトを作るための「型」を作ることを意識しながらプログラムを書くこと。 と言われても理解は深まらないので、オブジェクト指向ではない指向とはどんなものかを理解して、比較をすることで、理解を深めよ…
Javaでいうコンパイルという動作は、C言語とRubyのそれと、どのように違うのか調べた。 Javaソースコードのコンパイル OSやハードウェア依存のJavaプラットフォームで、ソースコードのコンパイルと実行が行われる。コンパイルされたJavaソースコードはバイト…
ネットワークを構築するネットワーク機器 有線用機器 ルーター/L3スイッチ: IPアドレスを使って、データの配送先を制御する。インターネットなど、外部のネットワークと接続。 L2スイッチ(スイッチングハブ): MACアドレスを使って、データの配送先を制御す…
ネットワークアーキテクチャとは、ネットワークにおいて必要な論理構造やプロトコルを体系的に定めたもの。代表的なアーキテクチャに、OSI参照モデルとTCP/IPモデルがある。 OSI参照モデルとTCP/IPモデルはどのようにして生まれたか 現在のインターネットの…
自分のlaptopのプライベートIPアドレスがどのように割り当てられているか、調べる。 ターミナルから$ ifconfig をうつ。複数のインターフェースが表示される。 上記は「lo0」「gif0」「stf0」「en0」が表示されている。 他にも「en1」「en2」「p2p0」「awdl0…
heroku にpushしたら、実行環境(runtime environment)が古いので、バージョンアップしてくださいと言われた。 最新のCedar-14は、Ubuntu OS のver 14.04 を採用している。プロジェクトで使用しているRubyは2.1.0なので、Cedar-14にするには、2.1系の最新版(2…
SSL/TLSでは、通信途中のデータの改ざんや、フィッシング詐欺(銀行や組織を装い、口座番号やクレジットカードを引き出す)を防ぐために、デジタル証明書とデジタル署名という技術を用いている。 デジタル証明書とは? SSLサーバー証明書ともいう。配布されて…
SSLはNetscape Communication社で開発された。webブラウザとwebサーバーの間でやり取りするデータを暗号化して通信するためのプロトコル。暗号化とデジタル署名の技術を使い、セキュアな通信を実現する。 SSLでは「共通鍵暗号化方式」と「公開鍵暗号化方式」…
1991年にフィンランドのLinus Benedict Torvaldsによって開発された。当時、商用のUnixは高価であり、Unixの学習目的で作られたMinixは機能に大幅な制限があったため、Linus独自で開発を始めることとなった。ライセンスはGPL(GNU Public License)である。 Li…
公開鍵暗号方式に使われるRSA暗号方式は、Rivest(ライベスト),Shamir(シャミール),Adleman(エイドルマン)の3人によって1977年に考案された。3人の頭文字を取り、RSAと名付けられた。Rivestはハッシュ関数のMD5の作者でもある。 RSAの暗号方式を理解すると、 …