takafumi blog

日々の勉強メモ

【Haskell】 言葉の定義まとめ(型クラス、型コンストラクタ、値コンストラクタ、型引数など)

環境 ghc 7.8.3 CentOS7.0 「すごいHaskellたのしく学ぼう!」第07章 メモ この辺で、言葉の定義がよくわからなくなっていたので、まとめてみた。 言葉 説明 例 型変数 関数の明示的な型宣言に使われるどんな型も取り得る事を意味する head :: [a] -> a この…

【Scala】 変位パラメータの境界「下限境界」「上限境界」

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ ■ 下限境界、上限境界(第19章) 簡単にいうと、型パラメーターに制限をつける機能 ▽下限境界 型パラメータが、どのサブクラスまで許可されるかを示す ▽上限境界 型パラメータ…

【Scala】 変位アノテーション「非変」「共変」「反変」

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ ■ 変位アノテーション(第19章) 例えば class Foo(foo: AnyRef){} というクラスがあったとき、引数fooにはAnyRefとそのサブ型は全て受け入れられる。 scala> val f1 = new Fo…

【Python】 3系最新版をmakeインストール

環境 CentOS 7.0 python 3.4.3 今までデフォルトインストールされていた2系を使っていたのですが、いい加減 3系を使ってみる事にする。 CentOSではデフォルトで入っているpython2系をアンインストールできない。 なのでpython 3系を使うにはmakeインストール…

【Scala】 正規表現のパターンマッチ

環境 Scala 2.11.6 CentOS7.0 パターンマッチに正規表現を使える。 グルーピングしている部分にマッチする。 scala> val r = """^(\d{4})-(\d{2})-(\d{2})$""".r r: scala.util.matching.Regex = ^(\d{4})-(\d{2})-(\d{2})$ scala> "2015-08-19" match { | c…

【Scala】 正規表現による文字列検索

環境 Scala 2.11.6 CentOS7.0 matches シンプル。ただし部分一致ではなく全体一致のみ。 scala> val target = "abcdefghijklmnopqrstuvwxyz" target: String = abcdefghijklmnopqrstuvwxyz scala> target matches """mno""" res1: Boolean = false scala> ta…

【Scala】 Applicationトレイト (Appトレイト)

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ ■ Application(App)トレイト(第4章) 通常Scalaアプリケーションはシングルトンオブジェクトのdef mainが実行される。 例 object Foo { def main(args: Array[string]):Unit …

【Scala】 アクセス修飾子と限定子

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ ■ アクセス修飾子と限定子(第14章) アクセス修飾子 修飾子 アクセス範囲 private 非公開メンバー。メンバーを含むクラス、オブジェクト内のみ。Javaと異なりインナークラス…

【Scala】REPLで複数行の貼り付け

環境 Scala 2.11.6 CentOS7.0 Scala REPLで複数行のコマンドを貼る。 :paste と打ってから、貼り付ければOK。 終了はCtrl + D。 今まで知らないでエライ苦労していた。 他にも:helpと打てば使えるコマンドがイロイロある。 scala> :help All commands can be…

【JavaScript】 オブジェクトで配列のメソッドを使う

環境 CentOS 7.0 JavaScript Node.js 0.12.2 残念ながら数字キーのオブジェクトにしか適用できないが、mapやfilter,reduceとかが便利。 ポイントはオブジェクトに"length"キーを設定しておくところ。 > var o = { '1': 2, '2': 3, a: 'AAA', d: 'DDD', lengt…

【JavaScript】 プロトタイプ/プロトタイプチェーン

環境 CentOS 7.0 JavaScript Node.js 0.12.2 プロトタイプと通常のプロパティの違い // prototypeを設定 var Hoge = function() {} Hoge.prototype.a = 1; // プロパティを設定 var Fuga = function() { this.a = 1; } var hoge0 = new Hoge(); var fuga0 = …

【JavaScript】 オブジェクト生成

環境 CentOS 7.0 JavaScript Node.js 0.12.2 オブジェクトを生成する主な方法は、以下3通り。 1) オブジェクトリテラル var o0 = {}; // 空オブジェクト var o1 = {a:1, b:"hoge"}; 2) new演算子 var o2 = new Object(); // 空オブジェクト var o3 = new Obj…

【Scala】for式の括弧と、セミコロン推論

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ 読了:第07章まで ■ for式の括弧と、セミコロン推論 P.134 「もしそうしたいなら、ジェネレータとフィルターは、括弧(...)ではなく中括弧{...}で囲んでもよい。中括弧で囲む…

PHPで日付フォーマットのチェック。

php

環境 CentOS 7.0 PHP 5.6 以外とよく聞かれる、日付形式「yyyy-mm-dd hh:ii:ss」が正しいかチェックする方法。

javascript プロパティ属性

環境 CentOS 7.0 JavaScript 今までJavaScriptはきちんと勉強せず感覚で使っていなあ、とよく思う今日この頃。 プロパティ属性 オブジェクトの持つプロパティには、以下の属性を設定できる。 名前 役割 value 値 writable 書き込み可 enumerable 列挙可 conf…

正規表現の名前付きグループ

環境 CentOS 7.0 Perl 5.16 PHP 5.6 Java 1.8.0nbsp;scala 2.11.6 恥ずかしながら、正規表現のグループに名前を付けれる事を今まで知らなかった。 ・・・という事で幾つかの言語の書き方を調べてみた。 結果は全部 abc, 123, def abc, 123, def で上が、通常…

apache mod_aliasメモ

環境 CentOS 7.0 apache2.4.6 mod_aliasは使った事がなかったので、今更だけど調べてみた。 主に使いそうなのは Alias AliasMatch 違いはAliasMatchが正規表現を使えるところだけで、他は同じ模様。 という事は基本的にAliasMatchを使えばいいのかな? 速度…

php ReflectionClass::invoke()で参照渡しの関数を使う

php

環境 CentOS 7.0 PHP 5.6 久しぶりにphpでハマっていたのでメモ。 phpunitでテストを書くときに、privateやprotectedをテストするときに、ReflectionMethodクラスを使う。 このときに実行する関数の引数が、参照渡しになっているときにエラーがでてハマった…

Haskellまとめ

Haskellを勉強したときの記事まとめ ■すごいHaskellたのしく学ぼう 一度通読したけどしばらく放置して読書会に行ったら、さっぱり忘れていたので再読。 今度は忘れないようメモ。 型クラス、型クラス制約、型注釈など 言葉の定義まとめ(型クラス、型コンス…

Haskell 型クラス、型クラス制約、型注釈など

環境 ghc 7.8.3 CentOS7.0 「すごいHaskellたのしく学ぼう!」メモ 読了:第02章まで 型変数 ghci> :t head head :: [a] -> a このaを型変数と呼ぶ。 どんな型も取り得るという事を意味する。 型クラス 何らかの振る舞いを定義するインターフェース。 具体的…

Scala マップ / Map

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ 読了:第04章まで ■ マップ / Map Scalaの集合は 順序が存在しない 重複を許可しない ミュータブルとイミュータブルが両方存在する 基本はイミュータブル である。 ▽初期化 …

Scala 集合 / Set

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ 読了:第04章まで ■ 集合 / Set Scalaの集合は 順序が存在しない 重複を許可しない ミュータブルとイミュータブルが両方存在する 基本はイミュータブル 異なる型を要素に追…

Scala タプル

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ 読了:第04章まで ■ タプル Scalaのタプルは インデックスは1から始まる 順序が存在する。 要素は型が異なるものを使える ※タプルとして型は決まる。例えば一度(Int, Int)と…

Scala リスト / List

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ 読了:第04章まで ■ リスト / List Scalaのリストは インデックスは0から始まる 常にイミュータブル。初期化時以外は要素を変更できない。 ※値の追加、や連結は常に新しいリ…

Scala 配列 / Array

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ 読了:第04章まで ■ 配列 / Array Scalaの配列は インデックスは0から始まる 配列要素の型は決まっている である。 ▽初期化 scala> val ar1 = new Array[String](5) ar1: Ar…

Scala mainメソッド定義とコンパイル

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ 読了:第04章まで ■ main定義とコンパイル mainメソッドの定義 アプリケーションのエントリーポイント、Javaでいうmainメソッドの定義。 // Something.scala import Anythin…

Scala シングルトンオブジェクト(singleton objects)

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ 読了:第04章まで ■ シングルトンオブジェクト(singleton objects) Scalaは、Javaと違いクラスが静的メンバーを持たない。 その代わりにシングルトンオブジェクトを定義する…

Scalaまとめ

Scalaを勉強したときの記事まとめ ■Scalaスケーラブルプログラミング(コップ本) 読了:第17章まで 関数定義 関数リテラル メソッドパラメータ1個のときの省略記法 Warningメモ シングルトンオブジェクト mainメソッド定義とコンパイル 配列/Array リスト/Lis…

Sacala Warningメモ

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ 読了:第04章まで ■ Warning 結果型がUnitのときに、最終行でUnit以外の型を返す式を評価している scala> def f() { "this String gets lost"} <console>:7: warning: a pure express</console>…

Scala メソッドパラメータ1個のときの省略記法

環境 Scala 2.11.6 CentOS7.0 「Scalaスケーラブルプログラミング」(コップ本)メモ 読了:第03章まで ■ メソッドパラメータ1個のときの省略記法 for(i <- 0 to 2) の「0 to 2」の部分は (0).to(2) の省略形。 Scalaではメソッドのパラメータが1つのとき、ド…