読者です 読者をやめる 読者になる 読者になる

Manage environmental variables safely with Android Studio.

When you wanna share an Android app's source code on GitHub(or any sharing service), you shouldn't write any secret keys inside your app. This is a way to hide these values from entire world. :) 1. Create or edit ~/.gradle/gradle.propertie…

ロゴの使用許可申請メールテンプレート

ロゴの使用許可申請メールを翻訳したので、テンプレートメモ。 カンファレンスの発表に使う資料に他社のロゴを掲載したいとき用。 Dear Permissions Editor, An employee of our company is scheduled to give a presentation at AWS Summit in Tokyo on Jun…

10 steps to get started with Realm for Android.

This article is written for someone who just wants to give it a try anyway. If you're interested in details, please read the official docs. The application that you're going to make from now, inserts 1 user with 2 breads every time you sta…

BitcoinのBlockとTransactionのデータ構造について

BitcoinはP2P通信技術を利用している。Bitcoinネットワークに参加する各ノードはクライアントとしてもサーバーとしても動作し、データの生成と送受信を行う。各ノードが持つデータはほとんど同じである。(常にノード間でブロックとトランザクションをやり取…

BitcoinとBlockchainについて調べたこと

Bitcoin: 非中央集権型の電子通貨。非中央集権型とは、銀行などの信頼された金融機関が取引に関与しないことをさす。金融上の取引を行う際、銀行の役割は支払い者に支払いの能力があることと、取引が不正ではないことを保証することである。Bitocinは、その…

アルゴリズムを評価する計算量について

アルゴリズムを評価できるように、計算量(ランダウの記号)について調べた。 アルゴリズムの評価 アルゴリズムは、実行に必要な資源の量で評価される。 資源とは、実行にかかる時間と使用するメモリ領域を指す。一般的には資源が少ない方が評価が高いが、計算…

ニュートン法を使って、平方根を求めるアルゴリズムを書いてみよう

Goのプレイグラウンドで遊んでたら、フロー制御の章でニュートン法を使って平方根を求めましょう( A Tour of Go )と言われたので調べた。 ニュートン法とは? ニュートン・ラフソン法(Newton-Raphson method)ともいう。 与えられた関数についてになるの近似…

Rubyのオブジェクトモデルを紹介しました。

speakerdeck.com

zshellを導入したときのメモ

ログインシェルをbashから、zshellに変更した。brewでzshをインストール。 $ brew install zsh ... ... $ which zsh /usr/local/bin/zshシステムで有効なログインシェルの一覧を、/etc/shellsで見ることができる。 ログインシェルとは、ユーザーがシェルに…

ターミナルからgemを使うときにバージョン指定する

忘れちゃうのでメモ。 $ rails _5.0.0.beta3_ new AppName $ pry _0.9.12.2_ pryのバージョンを確認したいとき でできます。

RubyのClassクラスについてとか、クラスを知るためのメソッドとか、あれこれ(メモ)

Rubyで MyClass.class # => Class MyClass.class.class # => Class という結果に Σ(・∀・;) となったので調べた。 (.classはオブジェクトが定義されたクラス名を返す。) まとめ Rubyでは、定義されたクラスは全て、Classクラスのインスタンスとなる。 Rub…

emacs key bindingメモ

キーバインドのデフォルトで C-h がHELPの設定になっていたので、 ~/.emacs.d/init.el ファイルに下記マクロを追加。シンタックスはemacs lisp. (keyboard-translate ?\C-h ?\C-?) Function: keyboard-translate from to この関数は、文字コードfromを文字コ…

JavaScript 関数のカリー化と部分適用

引数を複数とる関数から、いくつかの引数を固定値で束縛した新たな関数を生成する。これにより、関数を使うたびに同じ値の引数を入力する手間が省け、見た目も簡潔なプログラムになる。 カリー化とは、複数の引数を取る関数を、1つの引数のみを取る関数のチ…

JavaScriptのthis

jsのthisは、ある関数が呼び出されたときに、その関数を格納していたObjectを指す。 js how does "this" work? 関数を単にfunc();という形で単体で実行した場合、thisにはwindowが入る。 new演算子のthis jsのnewは任意の関数と一緒に呼び出すことができる。…

JavaScriptのプロトタイプベースのオブジェクト指向について、調べたこと

jsは(ES6より前は)クラスを持たないオブジェクト指向言語である。クラスの代わりに、プロトタイプというプロパティを作り、そのプロパティを複数のインスタンスで共有する。そのためプロトタイプベースのオブジェクト指向言語といわれている。 jsの全てのオ…

値渡し(call by value)とポインタ渡し(call by pointer)について

C言語では、関数を呼び出す際に、値渡しという方法で引数を渡す。 値渡しは、仮引数に実引数の値をコピーすること。 ポインタ渡しは、仮引数に実引数のメモリアドレスの値をコピーすること。メモリアドレスの"値をコピーする"、という点ではポインタ渡しも値…

Javascriptでclosureと、applyメソッド、callメソッドを使う

jsが持つ関数スコープを利用してクロージャー(関数閉包)を書くことができる。 js closure 上記の例では、関数countの中のローカル変数iを参照できるのは、無名関数が入っている変数xを実行したときのみである。変数iをグローバル変数にすると他の関数からの…

Javascriptのスコープ(関数、グローバル、ES6はブロック)と巻き上げについて

jsのローカルスコープは関数内のみを参照できることであり、グローバルスコープはscriptのどこからでも参照できることを指す。ローカルスコープを持つ変数をローカル変数、グローバルスコープを持つ変数をグローバル変数という。 スコープは変数が定義された…

Javascriptが持つ関数型言語の特徴(第一級関数、高階関数)

jsはプロトタイプベースのオブジェクト指向言語と呼ばれているが、関数型言語の性質も持ち合わせている。 第一級オブジェクト(first-class object)と第一級関数(first-class function) 第一級オブジェクトとは、プログラムにおいて、生成、代入、演算、(引…

MVCアーキテクチャについて調べたこと

MVCアーキテクチャのはじまり MVCアーキテクチャは、ソフトウェアの構成と役割について言及した概念のひとつ。1978年にXerox Parc(パロアルト研究所)のTrygve Reenskaugが、Smalltalk-76で使われているMVCモデルについて紹介したのが始まりと言われている。T…

オブジェクト指向と、言語の進化を辿るということ

オブジェクト指向とは、属性と振る舞いを持つオブジェクトを作るための「型」を作ることを意識しながらプログラムを書くこと。 と言われても理解は深まらないので、オブジェクト指向ではない指向とはどんなものかを理解して、比較をすることで、理解を深めよ…

データ圧縮の保存形式について調べた。

昔「セキュリティパッチをダウンロードしてください」と言われて、ダウンロードサイトにいったら、.tarとか.gzとかいろんな拡張子があって、どれをダウンロードしたら良いかわからなかったので、調べた。 実際は、Mac OSを使っていたので、アップルが公式に…

ユーザーエージェントに記載されるHTMLレンダリングエンジン

ブラウザのユーザーエージェントに"Gecko"って書いてあって、カエルか。と思ったので、調べてみた。 geckoとは HTMLレンダリングエンジン群の総称。HTML, CSS, XUL, Javascriptなどを解釈する。オープンソースで開発が進んでいる。Netscapeシリーズ6以降及…

Javaソースコードが実行されるまでの流れについて調べた

Javaでいうコンパイルという動作は、C言語とRubyのそれと、どのように違うのか調べた。 Javaソースコードのコンパイル OSやハードウェア依存のJavaプラットフォームで、ソースコードのコンパイルと実行が行われる。コンパイルされたJavaソースコードはバイト…

ネットワーク機器とIPアドレス、ポート番号について調べた

ネットワークを構築するネットワーク機器 有線用機器 ルーター/L3スイッチ: IPアドレスを使って、データの配送先を制御する。インターネットなど、外部のネットワークと接続。 L2スイッチ(スイッチングハブ): MACアドレスを使って、データの配送先を制御す…

ネットワークアーキテクチャと標準化組織について調べた

ネットワークアーキテクチャとは、ネットワークにおいて必要な論理構造やプロトコルを体系的に定めたもの。代表的なアーキテクチャに、OSI参照モデルとTCP/IPモデルがある。 OSI参照モデルとTCP/IPモデルはどのようにして生まれたか 現在のインターネットの…

ターミナルからプライベートIPアドレスとMACアドレス、ルーティングテーブルを確認する

自分のlaptopのプライベートIPアドレスがどのように割り当てられているか、調べる。 ターミナルから$ ifconfig をうつ。複数のインターフェースが表示される。 上記は「lo0」「gif0」「stf0」「en0」が表示されている。 他にも「en1」「en2」「p2p0」「awdl0…

heroku cedar-10が2015年11月以降使えなくなるそうだ

heroku にpushしたら、実行環境(runtime environment)が古いので、バージョンアップしてくださいと言われた。 最新のCedar-14は、Ubuntu OS のver 14.04 を採用している。プロジェクトで使用しているRubyは2.1.0なので、Cedar-14にするには、2.1系の最新版(2…

rails を4.1.6から4.2.1にしたら、awsが動かなくなって、deliverメソッドを注意された

rubyのバージョンもあげようと思ったけど、 $ rbenv install --list で見たら、2.2.0-preview1が最新だったので、安定版が出るまで待つことにする。 railsのバージョンをあげよう まずテストが通るか試す。アップデート後のエラー修正で、原因の特定がしやす…

デジタル証明書とデジタル署名について

SSL/TLSでは、通信途中のデータの改ざんや、フィッシング詐欺(銀行や組織を装い、口座番号やクレジットカードを引き出す)を防ぐために、デジタル証明書とデジタル署名という技術を用いている。 デジタル証明書とは? SSLサーバー証明書ともいう。配布されて…

SSLのハイブリッド方式

SSLはNetscape Communication社で開発された。webブラウザとwebサーバーの間でやり取りするデータを暗号化して通信するためのプロトコル。暗号化とデジタル署名の技術を使い、セキュアな通信を実現する。 SSLでは「共通鍵暗号化方式」と「公開鍵暗号化方式」…

sshとsslの違い

SSHとは、リモートホストのシェルを利用するための通信プロトコル。同じ機能を持つtelnetやftp(file transfer protocol)は、ネットワーク上に平文でパスワードを送信してしまうため、パスワードをネットワーク経路上で盗聴される可能性が高い。Secure Shell(…

技術に関する書籍からの引用

知人に『計算機プログラムの構造と解釈』という本を紹介してもらった。読み始めて、この本がMITの計算機科学学科で使われている教科書だと知った。こんな高尚な本を紹介されると、期待に応えるために頑張ろうと勝手に思ってしまう。 Amazon.co.jp: 計算機プ…

Linuxについて調べたことまとめ

1991年にフィンランドのLinus Benedict Torvaldsによって開発された。当時、商用のUnixは高価であり、Unixの学習目的で作られたMinixは機能に大幅な制限があったため、Linus独自で開発を始めることとなった。ライセンスはGPL(GNU Public License)である。 Li…

RSAの暗号方式を調べた

公開鍵暗号方式に使われるRSA暗号方式は、Rivest(ライベスト),Shamir(シャミール),Adleman(エイドルマン)の3人によって1977年に考案された。3人の頭文字を取り、RSAと名付けられた。Rivestはハッシュ関数のMD5の作者でもある。 RSAの暗号方式を理解すると、 …

Google Public Domain Name System(DNS)

DNSは、ホスト名とドメイン名をIPアドレスに変換してくれるサービスです。 通常はインターネットサービスプロバイダが独自のサービスを提供してくれますが、 Googleさんも提供していると聞いて、早速やってみた。 Using Google Public DNS - Public DNS — Go…

データベースの基本

DBの基本を勉強した。 web applicationの開発をしていて、そもそもDBってなんやねん!って思ってた。 DBってなんだ? 整理した形でデータを保存しておく「基地(Base)」。整理の方式は階層型、ネットワーク型、リレーショナル型がある。人気のリレーショナ…