Jul 3, 2013

Scala メモ

配列定義

# 同時に初期値を与える
val arr = Array( 1, 2, 3 )
( val arr = Array.apply( 1, 2, 3 ) と同義 )

# 初期化だけで後で値を与える
val arr = new Array[ Int ](3)
arr(0) = 1
arr(1) = 2
arr(2) = 3
( arr(0) = 1 は、arr.update( 0, 1 )と同義)

# var で変数だけ定義
var arr: Array[ Int ] = null
arr = new Array(10)


配列の要素を処理
array.foreach( v => 関数本体 )

array.foreach( ( v: 型 ) => 関数本体 )

# 部分適用された関数(partially applied function)
array.foreach( 式 )

for( v <- array ) 式


List定義
Arrayはミュータブルなので、可能な場合はListを使う方がベター

#Listの連結
List( 1, 2 ) ::: List( 3, 4 )

# List の先頭に追加
1 :: List( 2, 3 )

# 末尾に追加
List ( 1, 2 ) :+ 3

# 空のList Nil
1:: 2 :: 3 :: Nil
res0: List[Int]  = List( 1, 2, 3)


注意:
先頭に追加はO(1)だが、末尾追加はO(n)なので、基本的には先頭追加を考える。
先頭追加で最後にreverse することで代用できる場合はそうする。




for式
for( i <- 0 to 2 ) 式
( 0 to 2 は、0.to( 2 ) と同義 scala.collection.immutable.Range.Inclusive = Range(0, 1, 2))



(まだ途中)




Jan 22, 2013

Mac OSX: コマンドで less を css に変換する

npm で、less をインストールし、lessc コマンドを使って、less を css に変換します。

(node.js と npm がインストールされている前提とします。)
(node.js は、ports、brew、公式サイトで配布されているインストーラーのいずれかを使ってインストールします。)
$ node -v
v0.8.17

$ npm -v
1.2.0

$ sudo npm install -g less
(私は、グローバルにインストールしています。)

$ which lessc
/usr/local/bin/lessc

$ lessc -v
lessc 1.3.3 (LESS Compiler) [JavaScript]

$ lessc -x main.less main.min.css
(オプションの詳細は、less -h を参照)


参考サイト

http://lesscss.org/

Nov 16, 2011

CentOS に 最新版の munin をインストール

epel の リポジトリがない場合は追加
rpm --import http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL
rpm -ivh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
※ 上記は64bitマシン

epel の enabled を 0 にする。(お好みで)
# vi /etc/yum.repo.d/epel.repo

[epel]
name=Extra Packages for Enterprise Linux 5 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

dag の リポジトリがない場合は追加
# vi /etc/yum.repo.d/dag.repo

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
gpgkey=http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
enabled=0

yum でインストール
yum --enablerepo=dag --enablerepo=epel install munin munin-node
※ munin, munin-node はそれぞれ必要に応じて



参考サイト
http://munin-monitoring.org/wiki/LinuxInstallation

Nov 15, 2011

Exim で SMTP ゲートウェイ の設定

/etc/exism/exim.conf の ROUTERS セクションの一番初めに以下の要領で記述します。

send_to_gateway:
  driver = manualroute
  domains = !+local_domains
  transport = remote_smtp
  route_list = * ispgw.smtp.host

これ、ROUTERS セクションの一番最後に追記して、全然設定が反映されず、数時間ハマってしまいました。。

参考サイト

http://www.hserus.net/wiki/index.php/Exim

Nov 1, 2011

javascript プロパティ値の存在チェック

単純に、プロパティが存在しているかチェック
'key' in obj

プロパティ継承を辿らず、自身のプロパティとして存在してるかチェック
obj.hasOwnProperty('key');