takafumi blog

日々の勉強メモ

【Node.js】【npm】 npm コマンド超基本

環境 CentOS 7.0 JavaScript Node.js 0.12.2 npm 2.7.4 インストール npm自体のインストール nodeをインストールすると、自動でインストールされる。 npm install <モジュール名> ローカルインストール 現在のディレクトリ直下のnpmプロジェクト内に./node_m…

【VMwarePlayer】【VirtualBox】 共有ディレクトリとシンボリックリンク

npmとかパッケージ管理ソフトで、インストールの際に失敗する事があるので調べていたら気が付いたのでメモ。 基本的にホストがLinuxのときは、VMwarePlayer、VirtualBox共にシンボリックリンクが作れない。 一応npmには--no-bin-linksというオプションで、シ…

【Haskell】 Project Euler Prblem4 を少し考えて解いてみた

環境 ghc 7.10.2 CentOS7.0 Problem 4 - PukiWiki Euler problems/1 to 10 - HaskellWiki だと結構力技なので、少し考えてみた。 1 main :: IO () 2 main = print $ head [(x, y, z) | x <- palindromes dgt, y <- factors dgt, let z = x `div` y, x `mod` …

【Haskell】 Project Euler Prblem2を読み間違えて解いてみた

環境 ghc 7.10.2 CentOS7.0 Problem 2 - PukiWiki の 「数列の項の値が400万以下の, 偶数値の項の総和を求めよ.」 を 「数列の項が400万以下の, 偶数値の項の総和を求めよ。」 と間違って解いてみた。 1 main :: IO () 2 main = print . sum' .filter even $…

【Haskell】 stack で ghc-modがインストールできない

環境 ghc 7.10.2 CentOS7.0 Haskellのパッケージ管理をstackにしてみた。 順調にインストールはし、Yesodもcabal hellせずナイスと思ったら、ghc-modがインストールできない。 $ stack install ghc-mod While constructing the BuildPlan the following exce…

【Ruby】 引数の型チェック gem contracts

環境 ruby 2.2.3 CentOS7.0 Rubyを始めてみた。 さて、初めてすぐ気になった事。 関数は以下のように書くわけで 1 def gcd(a, b) 2 if b == 0 3 return a 4 else 5 return gcd(b, a % b) 6 end 7 end 8 9 p gcd(10, 'a') $ ruby gcd.rb gcd.rb:9:in `%': Str…

【Haskell】 HsExifを使い、Exif情報で画像を整理するスクリプトを書いてみた

環境 ghc 7.8.3 CentOS7.0 HaskellでExif情報を使って、写真を整理するスクリプトを書いてみた。 github.com ・・・まだExif撮影日時ごとにディレクトリ作成して、画像をコピーするだけ。 Exif取得自体はHsExifといモジュールを使ったが、そもそもHaskell自…

【Haskell】 H本 13.6のチェスの演習問題

環境 ghc 7.8.3 CentOS7.0 「すごいHaskellたのしく学ぼう!」第13章 メモ 13.6のチェスの演習問題をやってみた。 import Control.Monad type KnightPos = (Int, Int) -- (横, 縦) moveKnight :: KnightPos -> [KnightPos] moveKnight (c,r) = do (c', r') <…

【Haskell】 モナド簡単まとめ

環境 ghc 7.8.3 CentOS7.0 「すごいHaskellたのしく学ぼう!」第13章 メモ 簡易Monadまとめ Monad(モナド) ▽定義 class Monad m where return :: a -> m a (>>=) :: m a -> (a -> m b) -> m b (>>) :: m a -> m b -> m b x >> y = x >>= \_ -> y fail :: Str…

【Haskell】 ファンクター、アプリカティブの簡単まとめ

環境 ghc 7.8.3 CentOS7.0 「すごいHaskellたのしく学ぼう!」第10,11章 メモ ファンクター、アプリカティブのとりあえず、最低限必要そうな部分をまとめ。 でも間違いなく、こちらの方が、はるかに分かりやすいです。 なので、以下は自分用のまとめです。 F…

【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を型変数と呼ぶ。 どんな型も取り得るという事を意味する。 型クラス 何らかの振る舞いを定義するインターフェース。 具体的…