OmniAICreator/Qiita-1.07M huggingface dataset:
[Apache] RSA SecurID Authentication Agent 7.1 for Web for Apache Web Server インストール

# ご了承
とりあえず、プロセスの起動ができるようになっただけで
わかっていないことだらけです。
追加情報があり次第、追記していく予定です。
どうぞ、ご了承ください。

# 準備
## 環境
```c
# uname -a
Linux jnavi-dev 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

# cat /etc/redhat-release
CentOS release 6.5 (Final)

# mkdir /var/ace
# touch /var/ace/sdconf.rec
# echo CLIENT_IP=192.168.xxx.xxx > /var/ace/sdconf.rec
# chmod 755 /var/ace
# chmod 755 /var/ace/sdconf.rec
# export VAR_ACE=/var/ace
```

## httpdの停止
```c
# /etc/init.d/httpd stop
```

## プロセスの確認
```c
# ps auxww | grep rpc
rpc       1075  0.0  0.0  18976   708 ?        Ss   Aug07   0:01 rpcbind
rpcuser   1093  0.0  0.0  23348   384 ?        Ss   Aug07   0:00 rpc.statd
root     22020  0.0  0.0      0     0 ?        S    Aug08   0:00 [rpciod/0]
root     22021  0.0  0.0      0     0 ?        S    Aug08   0:00 [rpciod/1]
```
注）``CentOS6``では、``portmap``ではなくなり、``rpcbind``が起動しています。

# インストール
## ダウンロード
[EMC2](http://www.emc.com/security/rsa-securid/rsa-authentication-agents/apache-7-1.htm)からダウンロード

## 展開
```c
# unzip WebAgent_713_x64_All_Apache_128_01201414.zip
# unzip WebAgent_71_Apache22_RHEL5_64_128_01201414.zip
# cd CD
# mv rhel-5.1-x86-64/*.* ../
```
``rsawebagent.tar``が``install``と同じディレクトリにいる必要があったので、``tar``を移動します。
``rhel-5.1``になっていますが、インストールできます。
くわしくは、``install``を読んでください。（426行目あたり）

```c
# echo CLIENT_IP=192.168.xxx.xxx > sdopts.rec
# ./install

（利用規約を読んだら）
Do you accept the License Terms and Conditions stated above? (Accept/Decline) [D]A

Enter Directory where sdconf.rec is located [/var/ace]
./install: line 418: [: : integer expression expected
./install: line 426: [: : integer expression expected
./install: line 426: [: : integer expression expected

Please enter the path for the Apache installation directory [/etc/httpd]

Please enter the path for the Apache Configuration File [/etc/httpd/conf/httpd.conf]

Please enter the path for the Apache httpd binary file [/usr/sbin/httpd]

The Web Agent will be installed in the /etc/httpd/rsawebagent directory.
Now installing the Web Agent for Apache Server Files.
This may take several minutes.

```

## 確認
```c
# tail /etc/httpd/conf/httpd.conf

###### BEGIN_RSA_BLOCK
###### WARNING: DO NOT EDIT THIS BLOCK. ANYTHING ADDED WILL BE REMOVED BY
######          THE NEXT INSTALLATION OF RSA WEB AGENT
include /etc/httpd/rsawebagent/rsawebagent.conf
###### END_RSA_BLOCK
```

# 起動
```c
# /etc/init.d/httpd start
# ps auxww | grep rpc
rpc       1075  0.0  0.0  18976   708 ?        Ss   Aug07   0:01 rpcbind
rpcuser   1093  0.0  0.0  23348   384 ?        Ss   Aug07   0:00 rpc.statd
root     22020  0.0  0.0      0     0 ?        S    Aug08   0:00 [rpciod/0]
root     22021  0.0  0.0      0     0 ?        S    Aug08   0:00 [rpciod/1]
apache   28056  0.0  0.0   6588   304 ?        S    13:05   0:00 aceapi_rpc_server
apache   28057  0.0  0.0   6588   756 ?        S    13:05   0:00 aceapi_rpc_server
```

ひとまず、ここまで。
mysql 5.6 memcached pluginのインストール

http://dev.mysql.com/doc/refman/5.6/en/innodb-memcached-installing.html
ここに書いてあるとおり。

 * libmemcached.soが存在することを確認

```
shell> find / -name "libmemcached.so"
```

* プラグインのディレクトリを確認

```
mysql> show variables like 'plugin_dir';
```

 * インストールを実行(mysql.pluginテーブルへのINSERT権限が必要)

```
mysql> install plugin daemon_memcached soname "libmemcached.so";
```

 * プラグインがインストールされていることを確認

```
mysql> show plugins;
```
最強Evernote管理術！tag地獄から抜け出すために。。。

##その壱. タグをつかわないこと

こんなんになっている方必見です。
![スクリーンショット 2014-08-20 0.19.47.png](https://qiita-image-store.s3.amazonaws.com/0/25116/fd00dd76-2210-2636-0988-33f119a7ea44.png)

##その弐. ノートブックに親カテゴリと小カテゴリを作る。
その前に、名前についてです。

 - 親カテゴリをスタック
 - 小カテゴリをノートブック

と呼ばれています。

このスタックをうまく作り、その中にノートブックを入れることが
 **最高の整理術** です。

### ノートブックの表示方法の説明

![スクリーンショット 2014-08-20 1.23.49.png](https://qiita-image-store.s3.amazonaws.com/0/25116/58b24ebc-bb0c-1f58-abd6-a940dee87a8f.png)

スタックをダブルクリックするか
右クリック「スタックをすべて展開」をすると見やすいです。

###スタックの作り方（今回は、「エンジニア」を作ります。）

1.色々とノートブックを作ります
2.エンジニアの上で右クリックして、スタックに追加、スタックを作成する
![スクリーンショット 2014-08-20 1.51.11.png](https://qiita-image-store.s3.amazonaws.com/0/25116/dfc448c5-6c63-74a6-1f02-e41d6e122a86.png)

3.次のようになると思います。
![スクリーンショット 2014-08-20 1.53.09.png](https://qiita-image-store.s3.amazonaws.com/0/25116/30aa85e2-3cb5-a7c7-6d5b-de760b957ea9.png)

4.ノートブックのスタックが出来ると思います。
ここのうえで、右クリックで「名前の変更」ができます。
あとは、ここにドラック＆ドロップをすると追加できます。

5.こうなりました。
![スクリーンショット 2014-08-20 2.10.13.png](https://qiita-image-store.s3.amazonaws.com/0/25116/706b8acc-dfbc-8519-c626-a2db86cd64b0.png)

６.  **大事なショートカット** を設定するー＞楽になります。全部するべき

![スクリーンショット 2014-08-20 2.18.54.png](https://qiita-image-store.s3.amazonaws.com/0/25116/3bb28a56-c8e1-aef2-58d6-1ae996da1c83.png)


  完了
  

##その参. webからの登録
google chrome extionをいれましょう！safari　IEの方は。。。各自で。
ー＞[リンク](https://chrome.google.com/webstore/detail/evernote-web-clipper/pioclpoplcdbaefihamjohnefbikjilc?hl=ja)
これです。
![web_clipper.png](https://qiita-image-store.s3.amazonaws.com/0/25116/916febd4-02c3-e92a-217b-942595bbea42.png)


###clipの仕方
ここで、ノートブックを選択する
![スクリーンショット 2014-08-20 2.54.34.png](https://qiita-image-store.s3.amazonaws.com/0/25116/e55f7238-7e5b-0f37-02c7-2fa4f8ccba60.png)

※これ。。すごいなとおもうのが、記事の内容に合わせて、ノートを勝手に選んでくれるんですよ。たまに違うこともありますが、結構役に立ちます。

 完
 

##その. スマホからの登録（PDFなどを写メした場合。）

スマホから写メをして簡単にEvernoteに簡単にアップロードが出来ます！
あぷりはここからー＞[リンク](https://play.google.com/store/apps/details?id=com.intsig.camscanner&hl=ja)

###1.evernoteと同期します（これなかなか見つからない）
ひだりにスワイプして、設定を押します。

![2014-08-20 02.58.41.png](https://qiita-image-store.s3.amazonaws.com/0/25116/0edeb6ab-b2f2-ba74-1522-842be5aedcaa.png)

###2.ドキュメントエクスポートに行く。

![2014-08-20 02.59.59.png](https://qiita-image-store.s3.amazonaws.com/0/25116/d6503eb4-a88e-e466-da62-26fc7da30927.png)

###3.アップロードアカウント
![2014-08-20 03.00.06.png](https://qiita-image-store.s3.amazonaws.com/0/25116/2404a840-eb8b-4420-cb99-5aa2ae00c04b.png)

###4.evernoteを選択
![2014-08-22 12.41.19.png](https://qiita-image-store.s3.amazonaws.com/0/25116/41bbe423-52d8-1811-6628-f3f997cee1df.png)


###5.写真を撮ってアップロードする
写真を撮ったら、右下の「もっと」ー＞アップロードー＞evernote

※PDFでアップロードしたほうがいいです！Evernoteを見た時に画像がそのまま見えます！


![2014-08-20 03.04.59.png](https://qiita-image-store.s3.amazonaws.com/0/25116/4f702542-ba51-7d54-a1d9-0aef115c0cb6.png)


 これで完了！！


ちなみに既存の300個あるノートを振り分けています。。
時間めっさかかる。。。。
いい方法ないかな。。

最後に参考。
タグと何が違うのかというと。。
タグは、複数の記事に関して設定できるが、
スタックは、必ずひとつの記事にしか設定できない。
[メモ] BEMとSass

初めてBEMとSassを触った印象
BEMとSassは相性がいい

### BEM
* やっぱりHTMLが太る(でも気にしない)
* Blockのネスト(入れ子の階層)が多少深くなってもあまり困らない
    * 厳密にやりたいなら先にスタイルガイドを作った方が良さそう(推奨と言いたい...)

### Sass
* 要素型セレクタをうっかり使うと後で死ぬ(リセット系のCSSは除く)
    * でも、Block階層の最深部では影響範囲が限定的で、HTMLの冗長化を多少でも抑えるために使ってもいい(ことにした)
    * AutoPrefixerすげー
    * Mixinライブラリは便利

### PhpStorm
* PhpStorm便利
    * EAP version 8 でSassの"&"セレクタに対応
    * マルチカーソルでの入力、コピペは神
Windowsエクスプローラーでドットファイルを作成する

Windowsのエクスプローラーで安易にドットファイルを作ろうとすると怒られます。

例えば、なんかリポジトリがあって、そこで、`.gitignore`を作りたい、とします(この際、cmd.exeやPowerShellから作れば?とかは置いておきましょう)。

こういうとき、

![2014-08-22 03_58_07-sample.png](https://qiita-image-store.s3.amazonaws.com/0/11139/c0cc4df7-0d40-3807-f22d-adf61bef3153.png)

エクスプローラーでテキストファイルを作り

![2014-08-22 03_58_50-sample.png](https://qiita-image-store.s3.amazonaws.com/0/11139/b46414a5-6cf1-17b9-33de-806450023a3b.png)

`.gitignore` とかにファイル名を変更しようとしますが、

![2014-08-22 03_59_01-名前の変更.png](https://qiita-image-store.s3.amazonaws.com/0/11139/f1c77d5d-d5ff-4ad4-c049-4ab4b73e76fb.png)

このようなエラーが出たりして、変更することができません。

そこで、

![2014-08-22 03_59_53-sample.png](https://qiita-image-store.s3.amazonaws.com/0/11139/52827016-47f8-10de-e7b1-3ebab99eb51e.png)

と、入力します。末尾にも`.`を入力するのがポイント。

すると、

![2014-08-22 03_59_58-名前の変更.png](https://qiita-image-store.s3.amazonaws.com/0/11139/79221694-8a09-40e6-1e86-8d0a499546af.png)

「はい」と答えると、

![2014-08-22 04_00_04-sample.png](https://qiita-image-store.s3.amazonaws.com/0/11139/56357f0d-176d-86d5-8c12-982843e5c6d3.png)

無事、`.gitignore`を作ることができました。

----

元ネタ: [How to create a file with a . dot prefix in Windows Explorer](http://www.hanselman.com/blog/HowToCreateAFileWithADotPrefixInWindowsExplorer.aspx)
Controllerの中でレスポンスHTMLを取得する方法


たまーーーにactionの中で実際に返すhtmlを文字列として取得したい場合があるが、いつも忘れてオロオロしてしまうので備忘録として。。。

```controller.rb
def show
  @html = render_to_string
end
```

これでhtml取得出来る！！
シェルスクリプトがどこまで進んでいるのかすぐ分かる -x オプション

#サーバメンテナンスに便利なシェルスクリプト
シェルスクリプトは、いつも行っている定型作業を手軽に自動化できるので便利です。

* 特定のディレクトリを掃除させたり
* ソースの最新化をしたり
* リリースやバックアップに使っている

という方も多数いらっしゃるのではないでしょうか？
特に、複数のディレクトリを行ったり来たりするケースでは、
最も手軽で効果的な方法です。

#しかし、どこまで進んでるのか分からない
ただ、mvやcpなどのコマンドで大きなファイルを実行している場合など、
以外とスクリプトの待ち時間が長くなるケースがあります。

数十秒で終わってしまう処理では、
席を外すには短く、静止して待つには長い時間です。

#実行コマンドをデバッグ情報として出力するオプション -x

そこで、-xオプションをつけてやるとどのコマンドを実行しているのかが一目で分かるようになります

```bash:サンプルスクリプト
#/bin/sh

#変数の代入
TEST="test value"

#変数を出力
echo $TEST
```

```bash:実行コマンド
$ /bin/sh -x test.sh 
```

```text:出力結果
+ TEST='test value'
+ echo test value
test value
```

+から始まっている部分が、実行中のコマンドです。
これで、スクリプトがどこまで進んでいるのかが一目で分かりますね。

本来は、ちゃんとした出力を出力を付けておく方が望ましいですが、
手軽にスクリプトを使いたい、出力が必要ない(ソースが汚れるのが嫌)という方は、
使ってみてください。
BEAR.Saturday導入メモ

# インストール

```
$ cd /tmp && mkdir pear && cd pear
$ curl -O http://pear.php.net/go-pear.phar
$ sudo php -d detect_unicode=0 go-pear.phar
$ sudo pear config-set auto_discover 1 #自動発見ONに変更
$ sudo pear config-set preferred_state alpha 
$ sudo pear channel-update pear.php.net　#yumでいうアップデートに該当する。
$ sudo pear channel-discover pear.bear-project.net #チャンネルの追加
$ sudo pear upgrade pear
$ sudo pear upgrade-all
$ sudo pear install bear/BEAR-bate
```

ローカルに保存されている、PEARパッケージを表示

```
$ pear list
```

リモートのパッケージのバージョンも取得できる。

```
$ pear list-all
```

コマンドが通らなかったので、下記を参考に.bash_profileに対して環境変数を追記
http://osksn2.hep.sci.osaka-u.ac.jp/~taku/osx/bash_profile.html

* composer PHPのライブラリ依存管理ツール。
http://blog.monochromegane.com/blog/2013/06/02/development-php-composer-library-at-packagist-1/
http://blog.toshimaru.net/how-to-use-composer-autoload/
リクエスト(URL文字列)を.htaccessでindex.phpにGETで渡してあげるやつ

フレームワークとかなんとかPressでありがちな
リクエストされたURLを処理をする奴をメモしておく。
（リクエストルーターって言うらしいよ！）

今回は
` http://example.com/alpha/bravo/charlie/ ` を
` http://example.com/index.php?request=/alpha/bravo/charlie/ ` にして

```php: 
array(3) {
  [0]=> string(5) "alpha"
  [1]=> string(5) "bravo"
  [2]=> string(7) "charlie"
}
```
にする一通り。

***

肝心のファイルはこれ。

```apache:.htaccess
<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{HTTP_HOST} ^www.example.com
  RewriteRule ^(.*)$ http://example.com/$1 [R=301,L,NE]

  RewriteCond %{REQUEST_URI} ![&]
  RewriteCond %{REQUEST_URI} !/$
  RewriteCond %{REQUEST_URI} !\.[^/\.]+$
  RewriteRule .* %{REQUEST_URI}/ [L,R]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule (.*) index.php/?%{QUERY_STRING}&request=$1 [L]

  RewriteCond %{THE_REQUEST} ^GET\ !-f
  RewriteRule ^(.*)index.php/?(.*)$ http://example.com/$1$2 [R=301,L,NE]
</IfModule>
```

よく使うので書いてますがここはwwwの有り無しを揃える為なので要らないです。

```apache: 
RewriteCond %{HTTP_HOST} ^www.example.com
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L,NE]
```

これもwwwと同じような理由で、末尾に/ (スラッシュ)がない時に付けてあげてURLを揃えてる。

```apache: 
RewriteCond %{REQUEST_URI} ![&]
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.[^/\.]+$
RewriteRule .* %{REQUEST_URI}/ [L,R]
```

***

# 大事なのはここ
```apache: 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php/?%{QUERY_STRING}&request=$1 [L]
```

* ファイルをリクエストしている場合は処理しない
* /(ルート)より後ろを全部$1に渡してる
* ?%{QUERY_STRING} もポイント。元から付いてるGETを改めて付け直してる。

` http://example.com/alpha/?bravo=charlie ` のような時に
` http://example.com/index.php?bravo=charlie&request=/alpha/` としてくれる

***

# PHP で $_GET['request'] を処理する

これだけ。

```php:index.php
$request = array_values(array_filter(explode('/', $_GET['request']), "strlen"));
```
 * / (スラッシュ)でexplodeして配列化
 * URL構造の関係上、空配列が出来るのでarray_filterで整理


以上！
Swiftのクロージャで再帰


WWDC 2014でのスライド'[Advanced Swift](https://developer.apple.com/videos/wwdc/2014/?id=404)'に不動点コンビネータを使った見事な方法が載っていたので問題を簡潔にしてメモしておきます．情報をくれた@Ushio@githubさんに感謝．

## `let`だけでは無理
`let`を(`letrec`のように)使って

```swift
let fib = {(n: Int) -> Int in
    return n < 2 ? n : fib(n - 1) + fib(n - 2)
}
```
と記述しても，

```
error: variable used within its own initial value
```
とコンパイラに怒られてしまいます．
素直にクロージャで再帰する記述法はなさそうに思えます．

## 不動点コンビネータをかませて再帰を実現
上の方法では，クロージャ内部での変数参照の仕方が問題となっています．
ならば，その変数をパラメータとして与えてしまえばいいのでは？ということで，

```swift
let fib = {(f: Int -> Int, n: Int) -> Int in 
	return n < 2 ? n : f(n - 1) + f(n - 2) 
} 
```
というクロージャは成立します．`f`を`Int -> Int`な引数に仕立て上げていますので何の問題もありません（この引数こそが再帰関数そのものなわけですが）．
しかし，当たり前ですが`fib`は引数が2つ必要な関数になってしまって`fib(5)`などとは書けません．なんとか`(Int -> Int, Int) -> Int`なクロージャでから`Int -> Int`なクロージャへ変換したいところです．
その変換関数の雰囲気は次のような感じ：

```swift
func fix(f: (Int -> Int) -> Int, Int) -> (Int -> Int) {/*...*/}
```
この関数を間にかませて

```swift
let fib = fix {(f: Int -> Int, n: Int) -> Int in 
	return n < 2 ? n : f(n - 1) + f(n - 2)
}
```
とやればもれなく`fib`ができあがるわけですね．

と，ここまでくると，この手のインターフェースはどこか見たことあるかもしれません．不動点コンビネータというやつでした．思い出してきました．きちんとした理屈は専門書に譲るとして，簡単に言うと，
`f(fix(f)) = fix(f)`という等式が成り立つような関数のことです．
これが成り立つので，`f(...(f(f(fix(f))) = fix(f)`と何回`f`を施しても変わらないという面白さ．このグルグルを再帰に応用するんですね．関数の実装の方はこうなっています：

```swift
func fix(f: (Int -> Int, Int) -> Int) -> (Int -> Int) {
	var fix_f: (Int -> Int)!
	fix_f = {(n: Int) -> Int in return f(fix_f, n)}
	return fix_f
```
変数`fix_f`は，上の`fix(f)`を表現しています．実装の中身も上の等式とだいたい同じ雰囲気になってますね（`fix_f`は初期化しておかないと`f`の引数にできないため，アンラップオプショナル`!`でnil扱いにしておきます）．
面白いですね．`fix_f`が常に間に挟まっているため`fix_f`と`f`とが交互に起動されます（関数の呼び出し回数は2倍になっている）．'[Advanced Swift](https://developer.apple.com/videos/wwdc/2014/?id=404)'に出てくる例は，これをベースにメモ化に使う辞書も挟み込んで，メモ化フィボナッチ関数を実装しています．これは必見だとおもいます．

不動点コンビネータがHaskellに劣らずにシンプルに記述できるとは思いませんでした．感動しました．
以上です．
memo: Ruby ソースからインストール(CentOS 6.5/Ruby 2.1.2)

※ 書き途中
digital oceanのVPSでrubyをソースからインストールした際のmemo

## 事前準備

stable-snapshot をダウンロードする用途

```
sudo yum install wget
```

makeするために必要なものをインストール
関連系でいっぱいインストールされます。

```
sudo yum install openssl
sudo yum install zlib  # 既に入っていた
sudo yum install gcc
sudo yum install make # 既に入っていた

#一度下記をいれないでmakeしてgemが動かなかった。
sudo yum install zlib-devel 
sudo yum install openssl-devel
```

## コンパイル

prefixにパスを指定して、/usr/local/ruby というディレクトリにインストールすることを想定

```
sudo ./configure --prefix=/usr/local/ruby
sudo make
sudo make install
```

## 完了


```
sudo ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby
sudo ln -s /usr/local/ruby/bin/gem /usr/bin/gem

$ sudo ruby -v
ruby 2.1.2p205 (2014-08-21 revision 47229) [x86_64-linux]
$ sudo gem -v
2.2.2
```

あとで、bundlerからいれるもののメモ
windows8.1インストールDVDをUSBメモリに入れてブートさせる

* [ZOTAC WinUSB Maker - Josh Cell Softwares](http://joshcellsoftwares.com/products/zotacwinusbmaker/)

使い方がわかりづらいが、

1. USBメモリを差し込んだドライブを`WinUSB Maker`のウィンドウにドラッグアンドドロップ。
2. windows8.1インストールDVDをISO化したもの、もしくはDVDドライブを
   `WinUSB Maker`のウィンドウにドラッグアンドドロップ。

あとは待つだけ。


## Liva PC用


* [driver](http://www.ecsjpn.co.jp/liva/liva2.htm#FAQ)
* OSはwindows 8.1 64bitを使用すること。
Windows版ngrokでプロキシ超え

ngrokはローカルで動作しているサーバを一時的にオンライン公開するオープンソース。
ローカルで動作確認しているWEBアプリケーションをわざわざオンライン上に公開しなくても確認できるので便利。スマホサイトがある場合などは特に便利かも。
https://ngrok.com/

さっそく使おうとしたんだけど、社内ではプロキシサーバが入っているので、
これを超えないといけない。
しかもWindows版で使いたいんだけど、Windowsの情報がなかなかなくて。

以下はWindows版でプロキシを超える場合の手順

１.Windows版のダウンロード
　　以下のサイトよりWindows版をダウンロード
　　https://ngrok.com/download

２.ダウンロードしたngrok.zipを任意のフォルダに解凍

３.解凍したフォルダに以下のファイルを作成

```yml:ngrok.yml
http_proxy: "http://(ユーザ):(パスワード)@(プロキシサーバホスト):(ポート)"
```

４.コマンドプロンプトを起動して、２．で解凍したフォルダに移動
５.以下のコマンドを実行
   **ngrok -config=ngrok.yml ポート**

　　※ポートはローカルの公開したいサービスのポート(Tomcatの場合は8080等)

６.実行結果
![ngrok.png](https://qiita-image-store.s3.amazonaws.com/0/41605/b167b083-27cb-a3ae-6e07-5ea150c4ed6a.png)


７.６．のForwardingにあるURLを使ってオンライン上からアクセスする
　 ⇒ローカルのサーバを参照可能
Project Eulerをhaskellで練習していく日記: Problem 13

#問題
以下の１００個の５０桁の数の和の最初の１０桁を求めよ。
37107287533902102798797998220837590246510135740250
46376937677490009712648124896970078050417018260538
74324986199524741059474233309513058123726617309629
91942213363574161572522430563301811072406154908250
23067588207539346171171980310421047513778063246676
89261670696623633820136378418383684178734361726757
28112879812849979408065481931592621691275889832738
44274228917432520321923589422876796487670272189318
47451445736001306439091167216856844588711603153276
70386486105843025439939619828917593665686757934951
[以下略](https://projecteuler.net/problem=13)

#回答
```hs
calc2 :: [String] -> Integer
calc2 xs = sum $ map read xs

readnumfile = do 
     contents <- getContents
     return $ words contents

main = do
     numbers <- readnumfile
     print $ take 10 $ show $ calc2 numbers
```
#感想
Integer型を使えば、どんな大きい数も計算できるので、とりあえずは上記でいいのでしょうけど。
今回、入力は標準入力から読むようにしました。
無理矢理dataの練習をしたくて、あえて筆算を行うバージョンを作ったのが以下。

```hs
data Keta a = Keta { num :: a, afure :: a} deriving (Show)

add :: (Integral a) => (Keta a) -> (Keta a) -> (Keta a)
add (Keta {num=a, afure=b}) (Keta {num=c, afure=d}) = Keta {num=(a+c) `mod` 10,afure=b+d+((a+c) `div` 10)} 

kanyaku :: (Integral a) => [Keta a] -> [Keta a]
kanyaku [] = []
kanyaku (x:[]) = if afure s>0 then Keta {num=num s,afure=0}: (kanyaku [Keta {num=afure s,afure=0}])
                 else s:[]
                 where n = num x
                       s = Keta{num=n `mod` 10, afure=afure x+(n `div` 10)}
kanyaku (x1:x2:xs) = (Keta {num=n `mod` 10, afure=0}): (kanyaku ((Keta{num=(num x2)+(afure x1)+(n `div` 10), afure=afure x2}):xs))
        where n = num x1

keta n = Keta {num=n, afure=0}

numlist :: String -> [Keta Int]
numlist str = reverse $ map (keta . read . (:[])) str

addketas xs [] = xs
addketas [] ys = ys
addketas  (x:xs) (y:ys) = (x `add` y): (addketas xs ys)

calc xs = foldl addketas [] xs

ketas2num = concat . map (show.num) . reverse . kanyaku

readnumfile = do 
     contents <- getContents
     return $ words contents

main = do
     numbers <- readnumfile
     print $ take 10 $ ketas2num $ calc $ map numlist numbers
```
【Fuelphp】 Template クラスを拡張する。

fuelphpでのTemplateクラスをオーバライドして拡張を行う。

APPPATH.'classes/controller/'に template.php を作成。

```php:APPPATH.'classes/controller/template.php'
class Controller_Template extends Controller
{
・・・
}
```
Controllerを継承して作成。

app/bootstrap.php　を編集。

```php:app/bootstrap.php
Autoloader::add_classes(array(
	// Add classes you want to override here
	// Example: 'View' => APPPATH.'classes/view.php',
        'Controller_Template' => APPPATH.'classes/controller/template.php',
));
```
templateクラスを使用するContorllerクラスは継承元を
Fuel\Core\Controller_Template　
↓
Controller_Template
に変更する。

<完了>
各種言語のHelloWorld [ Python / PHP / Java / Perl / Ruby ]

# Java
```java
public class Main {
	public static void main (String[] args) {
		System.out.println("Hello World");
	}
}
```
# Perl

```pl
#!/usr/bin/perl
print "Hello World";
```

# PHP

```php
<?php
echo "Hello World";
?>
```
* ```?>``` は省略可能

# Python

```py
print "Hello World"
```

## Python3

* 追記 : py3 では `(` `)` を省略できないようだ。

```py
print ("Hello World");
```

# Ruby

```rb
#!/usr/bin/ruby
puts "Hello World";
```
dispatch_async内でUIViewが更新されない


dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
非同期 .. 処理は止まらないがdispatch内処理後数十秒経ってからUIViewが更新される
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
同期 .. dispatch内処理中はフリーズしてしまう


UIView更新の時だけdispatch_sync dispatch_get_main_queue使う


```
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                NSError* error = nil;
                NSString* url=[NSStringstringWithFormat:@"http://"];
                NSURLRequest* request = [NSURLRequestrequestWithURL:[NSURLURLWithString:url] cachePolicy:NSURLRequestReloadIgnoringCacheDatatimeoutInterval:5.0];
                NSData* data = [NSURLConnectionsendSynchronousRequest:request returningResponse:nilerror:&error];
                if (!i) {
                    dispatch_sync(dispatch_get_main_queue(), ^{ // mainキューでしかUIViewは更新されないので、更新される瞬間だけmainキューで処理
                        imagee[i].image = [UIImageimageWithData:data];
                        [self.draggableViewaddSubview:imagee[0]];
                        [self.draggableViewreloado];
                    });
                } else
                   
                    if (i==1) {
                        dispatch_sync(dispatch_get_main_queue(), ^{
                            imagee[i].image = [UIImageimageWithData:data];
                            [self.hakooaddSubview:imagee[1]];
                        });
                    } else {
                        imagee[i].image = [UIImageimageWithData:data];
                    }           
        });
```

http://stackoverflow.com/questions/16056124/uiview-unchanged-when-modified-from-dispatch-async
Terminal作業でtypoにイライラしないためのAlias

## 序

ほぼ外部エントリの引用となってしますが、ぜひ共有したい内容にも関わらず類似の投稿がQiitaになかったので投稿してみます。

引用元はこちら
[Blog by Sadayuki Furuhashi - typoでも動くbash alias](http://frsyuki.hatenablog.com/entry/20070618/p1)


## 本題
Terminal作業中、微妙に手が滑ってtypoしてしまう、そんな経験は誰にでもあると思います。
以下のようなaliasを切ることで、ちょっと手が滑っても狙ったコマンドが実行できます。
下記に限らず、各自常々typoし易い物を定義するのが良いと思います。

```bash
alias l='ll'
alias lll='ll'
alias kk='ll'
alias lcd='cd'
alias vu='vi'
alias vo='vi'
alias bi='vi'
alias bu='vi'
alias bo='vi'
```

上記を~/.bashrcに定義しても良いですが、~/.bash_aliasといったファイルに定義し、~/.bashrcに

```bash
if [ -f $HOME/.bash_aliases ];then
        . $HOME/.bash_aliases
fi
```

と記載するのも良いでしょう。
MongoDBで重要なOSの設定

MongoDBで特に重要なOSの設定は以下の３つ

1. ulimitを大きくする
1. readaheadを小さくする
1. NUMAをきる

## ulimitを大きくする

理由はTCPコネクションの枯渇を回避するため。

MongoDBはレプリケーションやシャーディングを使って、構成するコンポーネント(mongod,mongos,config)の数が多くなると、利用するTCPコネクション数がどんどん増えていく。

シングル構成であればあまり気にする必要はないかもしれない。

## readaheadを小さくする

理由は物理メモリを効率よく利用するため。

readaheadはファイルをmmapでメモリにマップするときのサイズだが、このサイズが大きいとクエリで利用するドキュメント以外のデータもメモリにマップされてしまうことが多く、物理メモリが効率よく使えないことが多い。

MongoDBのresで表される物理メモリ利用量が、搭載する物理メモリ量よりも小さい（半分ぐらい）の場合は、このチューニングをしてみるとよいだろう

## NUMAをきる

理由はCPUが効率よくメモリを利用できるため

NUMAはざっくり言うと、複数CPU複数メモリ搭載時に、各CPUが利用するメモリを、そのCPUが早くアクセスできるメモリに優先する、ハードウェアのアーキテクチャ。
MongoDBはメモリ全体をまんべんなく使うため、この機能を有効にする意味はない。むしろ逆効果になる。

NUMAが有効なハードウェアであり、CPUネックになっている場合は、このチューニングをした方がよいだろう。

## 詳しい設定方法

公式ホームページに掲載されている
http://docs.mongodb.org/manual/administration/production-notes/
Middleman で jQuery と Twitter Bootstrap を使う(gemで)

# 依存解決はgemで良いはず・・

ライブラリの追加、いつもみたいに手動ダウンロード、自分でディレクトリ作って置く、なレガシー手順どうにかしたい。。
正しい方法はなんなのか、ruby初心者として模索中・・・
bowerとかもあるみたいだけど、Middleman (Ruby) だから gem でライブラリの読み込みするべきなのでは・・
・・きっとこれで良いはず。うん。
ぼっちプログラマは手探りだな〜；；

## Middleman で Bootstrap

### まずはgemを持ってくる

Gemfile編集

```
gem 'bootstrap-sass', :require => false
```

参考URL : [Middleman: アセットパイプライン](http://middlemanapp.com/jp/basics/asset-pipeline/)

↑gemで読み込まれたライブラリをアセットパイプラインに追加する方法が記載されてる。

### Stylesheetに組み込まれるようにする

stylesheets/all.css.sass を編集

```
@charset "utf-8"
@import "bootstrap-sprockets"
@import "bootstrap"
@import "bootstrap-customize"
```
(bootstrap-customize.css.sassはカスタマイズ用に空ファイルとしてstylesheets以下に作っておいたもの。無くてもOK)

このままだとBootstrapのjavascriptがjQueryがなくて動かないので・・

## Middleman で jQuery

Gemfile編集

```
gem 'jquery-middleman', :require => false
```

### JavaScriptに組み込まれるようにする

javascripts/all.js.coffee を編集

```
//= require jquery
//= require bootstrap-sprockets
//= require_tree .
```

### 動作確認

```
$ bundle update
$ bundle exec middleman server
```

今のところこれで自分は満足。こうしたらもっと良いよ〜とかあれば教えてください。。
【SQL腕試し問題！】入会者数と退会者数を日付ごとに集計するSQLを書いてください

##はじめに
先日、業務で書いたSQLを問題として出してみます。
一見簡単そうに見えて、意外と難しい問題かもしれません。
みなさんはさらっとSQLで集計できるでしょうか！？

##要件
- ユーザーテーブル(users)は入会日(joined_on)と退会日(left_on)を持っている
- 退会していないユーザーの場合、退会日にはNULLが入る
- **ユーザー数の増減を確認するために、日付単位で入会したユーザーの人数と退会したユーザーの人数を一覧化したい。どうすれば取得できるか？**

##例
###ユーザーテーブル(users)

|id|joined_on|left_on|
|:--|:--|:--|
|1|2014-08-01|2014-08-10|
|2|2014-08-01|2014-08-05|
|3|2014-08-03|NULL|
|4|2014-08-03|2014-08-10|
|5|2014-08-10|NULL|

###期待する出力結果

|date|joined_count|left_count|
|:--|--:|--:|
|2014-08-01|2|0|
|2014-08-03|2|0|
|2014-08-05|0|1|
|2014-08-10|1|2|

## 制約等
- 推奨RDBMSはPostgreSQL 9.2.4ですが、それ以外のRDBMSを使ってもOKです。

## スキーマ作成用のSQL

````sql
CREATE TABLE users (
  id INTEGER PRIMARY KEY,
  joined_on DATE NOT NULL,
  left_on DATE NULL
);

INSERT INTO users VALUES (1, '2014-08-01', '2014-08-10');
INSERT INTO users VALUES (2, '2014-08-01', '2014-08-05');
INSERT INTO users VALUES (3, '2014-08-03', NULL);
INSERT INTO users VALUES (4, '2014-08-03', '2014-08-10');
INSERT INTO users VALUES (5, '2014-08-10', NULL);
````


## 解答方法
- 実行方法は自由ですが、[SQL Fiddle](http://sqlfiddle.com/)を使うとお手軽かもしれません。
- SQLができたら[gist](https://gist.github.com/)や[SQL Fiddle](http://sqlfiddle.com/)のURLをこの記事のコメントに貼り付けて下さい。工夫した点やアピールポイントがあればご自由にどうぞ。

![Screen Shot 2014-01-24 at 5.58.31.png](https://qiita-image-store.s3.amazonaws.com/0/7465/35410a58-e980-e142-395c-eebbe666f18f.png "Screen Shot 2014-01-24 at 5.58.31.png")

## その他
- 優勝者には素敵な商品が・・・出ません。順位を付ける予定もありません。各自、自己満足の世界でSQLを作って下さい。

## 僕の解答例
僕はこんな感じで作ってみました。
ちょっと長いけど、保守性や拡張性はちょっと高いかもしれません。
あ、自力で答えを考えたい人はまだ見ないで下さいね！！

- http://sqlfiddle.com/#!12/c861a/1
- SQL Fiddleが動かない場合は[こちらのgist](https://gist.github.com/JunichiIto/a18322984369084753edf38fbb460829)を開いてください。

## 最後に
それではみなさん、Let's try!!

## 過去に作ったSQL腕試し問題
もっとSQL問題を解いてみたい！という方はこちらの問題をどうぞ。

- [【SQL腕試し問題】現在の部署に所属する社員の一覧を取得するSQLを書いて下さい](http://qiita.com/jnchito/items/29e22cc5a73da29f65a3)
- [【SQL腕試し問題！】締め切り日が近いイベントの一覧の取得するSQLを書いて下さい](http://qiita.com/jnchito/items/7d5d7e829690ea3c4d6f)


##2014.08.22 18:00追記: 応用問題

その日時点での会員数を表示させてみるのも面白いかも。
こちらも解答待ってます！！

|date|joined_count|left_count|user_count|
|:--|--:|--:|--:|
|2014-08-01|2|0|2|
|2014-08-03|2|0|4|
|2014-08-05|0|1|3|
|2014-08-10|1|2|2|
Windowsのコマンドプロンプトでaliasを設定する (cmderの設定含む)

#aliasの設定方法
Windowsではコマンドマクロという機能を使用して、aliasと同じ設定が可能。

Windowsのコマンドプロンプトにて、
`doskey ｛マクロ名｝=｛実行コマンド名｝`
とすればよい。

ただし、一度ウインドウを閉じると設定が消えてしまうので起動時に自動読み込みさせる必要がある。

#設定のテキストファイル化
設定されているdoskeyは
`doskey /macros`
で表示できる。

これを利用してテキストファイルとして出力する。
`doskey /macros > %USERPROFILE%\macros.txt`

このファイルを読み込むときは
`doskey /macrofie=%USERPROFILE%\macros.txt`
とする。

#コマンドプロンプト起動時の読み込み
コマンドプロンプト起動時の/kオプションで、上記コマンドを実行するように設定する
![01.png](https://qiita-image-store.s3.amazonaws.com/0/30489/7ce68628-7f5f-6b12-35da-3801a29a2b4a.png)

なお、kオプションで複数のコマンドを実行する場合、&でつなぐことができる

#cmderでの設定
起動時のパラメータとして、選択文字列部分を追加する
![02.png](https://qiita-image-store.s3.amazonaws.com/0/30489/92847082-fd38-2ef7-b98f-8a3896b8a24a.png)


#参考ページ
コマンドマクロの設定
http://www.adminweb.jp/command/command/index2.html

コマンドプロンプトの起動オプション
http://www.atmarkit.co.jp/ait/articles/0006/22/news001_6.html
Unity4.6オープンβでボタン機能を試してみた


4.6オープンβはここからダウンロード
http://unity3d.com/unity/beta/4.6

目玉はやはり「uGUI」ということで、ボタン機能を試してみた

###概要
「ボタンを押したら反応」まで

###流れ
1.GameObject→UI→ButtonでButtonオブジェクトを追加
2.GameObject→CreateEmptyで空のGameObjectを追加し"UItest"と命名
3.空のGameObjectにスクリプトを追加しTest関数を作成
![GameObject_UItest.png](https://qiita-image-store.s3.amazonaws.com/0/49072/813097d9-2771-8986-60cf-4be50d4453a4.png)
4.InspectorでButton(Script)にあるOn Click()で2番で作成した"UItest"を選択し、Test関数を選択
![On_Click.png](https://qiita-image-store.s3.amazonaws.com/0/49072/0dd3e09b-5303-385b-bc84-68502bbe40bb.png)

###結果
実行して"Button"を押すと"Button Push!"がConsoleに出力される
![Screen.png](https://qiita-image-store.s3.amazonaws.com/0/49072/2086b851-24f9-6f88-1ebb-454683c4fb9a.png)

Consoleに文字列が出力される
![Console.png](https://qiita-image-store.s3.amazonaws.com/0/49072/16685851-2a24-2044-d06f-a0764a205b9f.png)

###感想
感触的には、NGUIとやり方は同じなので、NGUIを触ったことがある人は
移行しやすい印象を受けた


ただ、"空GameObjectにScriptをつけて、それをButtonにつける"というのは
慣れていない人には分かりにくい気がするのは変わらず。


あと、NGUIと違うのはコリジョン設定を行わなくても良い所ですね。


###使用したスクリプト

Buttonを押した時に動作するスクリプト

```Test.cs
using UnityEngine;
using System.Collections;

public class ButtonPush : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
	
	}
	// ボタンを押した際に呼ばれる関数
	public void Test()
	{
		// ボタンが押した際に出力
		print("Button Push!");
	}
}
```
Jettyで簡単にWebサーバを起動してみる


Webサイトの確認用によくさくっとWebサーバを立ち上げる事があるのですが、PythonのSimpleHTTPServerがWindows上でよく落ちてしまうのでもっと手軽なのないかなと思ってJettyで仕組みを作ってみた。
ただし、今のところ確認はMacOSXのみです。

# Jettyのインストール
[Eclipse Jetty Downloads](http://download.eclipse.org/jetty/) からダウンロードして適当なところに展開します。
僕の環境では ~/bin/jetty-distribution-9.2.2.v20140723 に配置しました。

# xmlファイルの作成とjettyの起動確認
次のようなXMLファイルを用意します。

```xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">

<Configure id="Server" class="org.eclipse.jetty.server.Server">
  <Set name="handler">
    <New class="org.eclipse.jetty.server.handler.ResourceHandler">
      <Set name="resourceBase"><Property name="files.base" default="./"/></Set>
    </New>
  </Set>
</Configure>
```

これを適当なところに起きます。
僕は ~/bin/jetty-static-content.xml に配置します。
やってることは files.base という変数でリソースのパスを設定するという感じです。
ではここで起動テストをしてみましょう。

```sh
$ cd ~/bin/jetty-distribution-9.2.2.v20140723
$ java -jar start.jar --ini OPTIONS=Server etc/jetty.xml etc/jetty-http.xml ~/bin/jetty-static-content.xml files.base=$HOME/dev/hoge jetty.port=8080
```

ここでは仮に ~/dev/hoge に moge.html というファイルがあるとします。
http://localhost:8080/moge.html にアクセスして上手くファイルが見れたら成功です。

# bashスクリプトにする
あとはこいつをbashスクリプトにまとめます。

```bash
#!/bin/bash
JETTY_HOME=$HOME/bin/jetty-distribution-9.2.2.v20140723
STATIC_CONTENT_XML=$HOME/bin/jetty-static-content.xml
PORT=8080

usage(){
    echo "Usage: $0 document_root [port]"
    echo "default port is 8080"
    exit 1
}

# original code: http://superuser.com/questions/205127/how-to-retrieve-the-absolute-path-of-an-arbitrary-file-from-the-os-x/218684#218684
abspath() {
    pushd . > /dev/null
    if [ -d "$1" ]; then
	cd "$1"
	dirs -l +0
    else
	cd "`dirname \"$1\"`"
	cur_dir=`dirs -l +0`
	if [ "$cur_dir" == "/" ]; then
	    echo "$cur_dir`basename \"$1\"`"
	else
	    echo "$cur_dir/`basename \"$1\"`"
	fi
    fi
    popd > /dev/null
}

[[ $# -eq 0 ]] && usage

if [ $# -gt 1 ]; then
    PORT=$2
fi
path=`abspath $1`

cd $JETTY_HOME
java -jar start.jar --ini OPTIONS=Server etc/jetty.xml etc/jetty-http.xml $STATIC_CONTENT_XML files.base=$path jetty.port=$PORT
```

abspathっていうのはフルパスを取得する関数です。詳しくは [osx - How to retrieve the absolute path of an arbitrary file from the OS X - Super User](http://superuser.com/questions/205127/how-to-retrieve-the-absolute-path-of-an-arbitrary-file-from-the-os-x/218684#218684) をみてください。Linuxとかなら他のコマンドでいける気がする。
これを ~/bin/jetty-run.sh という感じで置いて chmod +x しておきます。
あとは簡単に起動できます。

```sh
$ cd ~/dev/hoge
$ ~/bin/jetty-run.sh .
```

aliasなんかに設定しておくとさらに便利です。

```sh
alias jetty_run='/Users/btm/bin/jetty-run.sh'
```

```sh
$ cd ~/dev/hoge
$ jetty_run .
```

まとめとしては、MacOSXなら python -m SimpleHTTPServer にalias貼ればいいんじゃないかな。
tmuxの設定

私は普段 linux を使っていますが、都合上複数のターミナルを立ち上げながら作業することが多かったのでなんとかならないかなと思っていました。以前からtmuxがあることを知っていたのでしばらく触ってみようとインストールしました。自分のためメモ

##設定

vimのキー操作を邪魔しないようにC-tをprefixに選びました。

```sh
# 設定ファイルをリロードする
bind r source-file ~/.tmux.conf \; display "Reloaded!"
# プレフィックスキー C-bをC-tに変える
unbind C-b
set-option -g prefix C-t
# キーストロークのディレイを減らす
set -sg escape-time 1
# ESCキーの効きを改善
set -s escape-time 0
# ペインを立てに分割する
bind v split-window -h
# ペインを横に分割する
bind s split-window -v
# Vimのキーバインドでペインを移動する
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Vimのキーバインドでペインをリサイズする
bind < resize-pane -L 1
bind > resize-pane -R 1
bind - resize-pane -D 1
bind + resize-pane -U 1
# マウス操作を有効にする
setw -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on
# 256色端末を使用する
set -g default-terminal "screen-256color"
# ステータスバーの色を設定する
set -g status-fg white
set -g status-bg black
# ウィンドウリストの色を設定する
setw -g window-status-fg cyan
setw -g window-status-bg default
setw -g window-status-attr dim
# アクティブなウィンドウを目立たせる
setw -g window-status-current-fg white
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
# ペインボーダーの色を設定する
set -g pane-border-fg white
set -g pane-border-bg black
# アクティブなペインを目立たせる
set -g pane-active-border-fg white
set -g pane-active-border-bg cyan
# コマンドラインの色を設定する
set -g message-fg white
set -g message-bg black
set -g message-attr bright
# ステータスバーを設定する
## 左パネルを設定する
set -g status-left-length 40
set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
## 右パネルを設定する
set -g status-right "#[fg=cyan][%Y-%m-%d(%a) %H:%M]"
## ステータスバーのUTF-8サポートを有効にする
set -g status-utf8 on
## リフレッシュの間隔を設定する(デフォルト 15秒)
set -g status-interval 60
## ウィンドウリストの位置を中心寄せにする
set -g status-justify centre
## ヴィジュアルノーティフィケーションを有効にする
setw -g monitor-activity on
set -g visual-activity on
## ステータスバーを上部に表示する
set -g status-position top
#bind : command-prompt
```
vimを開いてもtopコマンドが動いている様子

![スクリーンショット](https://raw.githubusercontent.com/hidetzu/web-sindan-crawler/master/images/tmux_image.png) 

##参考サイト
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0127


##  追記 8/22
コピーができなかったのでファイル経由データの共有する方法をやってみた。

```sh:.bashrc
alias bfwrite="cat > .simple_clipbboard"
alias bfcat="cat ~/ .simple_clipbboard"
```

```vim:.vimrc
nnoremap <C-b> :read ~/.simple_clipboad
```
Slackのアカウントって多分こんな感じ。11月末まで紹介経由登録で$100クレジットゲットできるらしい。

「Slack良いよね！」と方々で言われているので試してみようと、いつものプログラミングサークル的な集まりのチームを作った。その為にちょっと気になって、チームの単位やアカウントの雰囲気を弄ったり調べたりした。多分下記で合っていると思う。

※会社で招待されたりすると動きが違うケースが有るのかもしれない。詳しいこと知っている人がいたら教えて下さい。


* 1メアドで1アカウントの対応で、自身がオーナーのチームを1つ作ることが出来る。
* メンバーとして参加するのは1アカウントで複数のチームに参加できる。新たなチームに招待されるとニックネームとパスワードを別途登録して参加。アイデンティティを分けられる様子。
* つまり、いろんな人がオーナーやっているところにジャンジャンJOINできるイメージの様子。
* チームの一部にのみアクセスできる制限アカウントや、1つのチャンネルだけにアクセスできるゲストを作るのは有料。

FAQの翻訳を書いている方がいてとても参考になりました。多謝。
http://www.freia.jp/taka/blog/slack-faq-restricted-accounts-and-single-channel-guest/index.html

チームを作って早速GitHub連携をしました。これで日々のコミットをお互いに監視してイジメ合うことができます。

11月末までは下記のリンクからサインアップたら$100クレジット付与されて、**もしもアップグレードしてくれたら**（間違ってました。8/23修正。）私にも$100分のクレジットが付与されるそうです。太っ腹ー。
https://slack.com/r/02fxn1l5-02gnqbjd
TinyCLというものを作りました

##はじめに
どうやらOpenCLはベンダーによって提供しているライブラリが微妙に違うらしい．NVIDIAでは，CL/cl.hppが存在しないため，C++でOpenCLを使うことができない．となると，CL/cl.hppを利用すると，もれなくNVIDIAでは動かなくなる可能性が高い，ということになる．

それはちょっとアカンやろ，と思いまして，どうせならモダンなC++で，かつ短くわかりやすく簡単に書けるようなOpenCLのラッパーを作っちゃえばいいんじゃないかな，って作ってみました．

https://github.com/GRGSIBERIA/TinyCL

NVIDIAドライバ + Visual Studioの導入方法はこちらです．
http://qiita.com/GRGSIBERIA/items/d8290c1a3ded59f4075a

##使い方
使い方は非常にシンプルです．

カーネルのソースコードは下です．
ちなみにget_local_id関数は，スレッド番号を取得しています．

```cpp
__kernel void TestMain(
	__global float* inputA, __global float* inputB)
{
	int gid = get_local_id(0);
	inputA[gid] = gid;
	inputB[gid] = gid * gid;
}
```

TinyCLを使っている様子です．

```cpp
#include <iostream>
#include "TinyCL.hpp"

int main()
{
	// デバイスに渡すための配列を0で初期化
	const size_t N = 10;
	std::vector<float> inputA(N, 0), inputB(N, 0);

	// ソースコードのコンパイル
	tcl::CLController controller("test.cl", "TestMain");

	// デバイス側のメモリを確保
	tcl::CLReadWriteBuffer bufA(inputA), bufB(inputB);

	// N個のワーカーを用意し，引数を設定して実行，Result関数で結果を書き込む
	controller.Setting(N).Run(bufA, bufB).Result();

	// 中身が正しいかどうか確認する
	for (int i = 0; i < N; ++i)
		std::cout << i << "," << inputA[i] << "," << inputB[i] << std::endl;

	return 0;
}
```

細かいところはコメントで．NVIDIAしか実行の確認できないのであしからず．他の環境を持ってる方がいたら，動かない部分をDEFINEとかで逃してください．

### 2015/02/19追記
ソースコードをもっと短くしてみました．以前のものと比較するとわかるのですが，CLControllerクラスを新しく作り，細かい設定をハンドリングするようにしました．これで最小4行程度でOpenCLを使えるようになります．

以前はOpenCLの実装になるべく忠実な形で抽象化していましたが，久しぶりに使ってみると使い方を忘れてしまいました．これだとさすがにアカンということで，思い出せるレベルで簡単なAPIにしたかったので，CLControllerを追加しました．一応，色々やりたい人向けの機能も残してあります．

### 2015/02/21追記
引数を2つ以上指定すると動かないという，かなり深刻なバグがあったので修正しました．

### 2015/02/23追記
たったの3行で使えるようになりました．

##解説
なるべく短く書けるように工夫しました．CLBufferはコンストラクタに配列を渡せるようにしておけばもう少し短くなるかもしれません．

OpenCLはC言語で書かれているので，そこかしこにポインタを使っています．
特に，変数の型がvoid*なのに，引数の都合でvoid**にキャストしないと困るところが多いです．
変換ミスって落ちることもあります．

また，OpenCLは関数が少ない代わりに，フラグやvoid*を引数に渡して管理するので非常に危険です．
VC++でも，インテリセンスに引数名が出なくて苦しみました．
普通にリファレンスが手元に置いて，一つ一つ引数を目視でチェックしないとヤバイです．
N番目からスタートして，0個のクラスタをN個で分けるとか，これ見つけるのに2日かかりました．

このあたりのミスを誘発するような設計では，とてもとてもコードを書いていられません．
なので，なるべくミスらないように，しかも綺麗に少ない行数で書けるよう，工夫することで解決しました．

基本的には，デバイスの取得やカーネルの生成などは，本当に基本的なことしかやらなければ，定形処理で済みます．
このような部分は積極的にカプセル化することで，OpenCLの複雑な概念を減らすようにしています．
あと，せっかくなので，なるべくポインタを使わないように書きました．
ポインタもラップしているので，うっかりキャストに失敗するパターンを減らしています．

TinyCLはOpenCLを使う上で事故る心配を少なくしてます．
とにかくこれが大事なので重点的に解決できるよう心がけました（迫真）
簡単にvimで複数行を一気にコメントアウトするための設定方法

昨日の投稿で

[vimで一気にコメントアウトする方法(複数行の先頭に文字を追加する方法)](http://qiita.com/shirochan/items/174c3169344043449339)

という投稿をしましたが、

pluginを入れるとよりさらに簡単にコメントアウトが可能になります。

方法はとても簡単です。

vimrcに以下を記述するだけです。

```NeoBundle "tyru/caw.vim.git"
caw:hatpos:toggle
 nmap <C-K> <Plug>(caw:i:toggle)
 vmap <C-K> <Plug>(caw:i:toggle)```

たったこれだけです。

* `NeoBundle`の部分は適宜自分の利用しているプラグイン管理のものに変更してください。
* キーマッピングの部分は適宜ご自身の使いやすい設定に変更してください。

使い方は簡単です

ビジュアルモードに入って、
コメントアウトをしたい行を選択

そして、

`ctr + k`

プラグインを利用しない方法より更に簡単になりましたね。

さらにファイルの種別を見て自動で適したコメントアウトの形式を選択してくれます。

vimって便利ですね。

2017/06/21 追記
```nmap <C-K> <Plug>(caw:i:toggle)
vmap <C-K> <Plug>(caw:i:toggle)``` の部分が

```nmap <C-K> <Plug>(caw:hatpos:toggle)
vmap <C-K> <Plug>(caw:hatpos:toggle)```
へと変更になったようです。


参考書籍
[Vimテクニックバイブル～作業効率をカイゼンする150の技](https://amzn.to/3bCGcf5)
[実践Vim　思考のスピードで編集しよう！ (アスキー書籍)](https://amzn.to/2AsLmgA)
【JavaScript】 undefindとnullの違い


一見同様な意味に見えるこの2つであるが、その2つの意味的違いとしては、

* undefined: 存在自体が設定されていない
* null: 値は利用可能でないが、今後利用できる見込みがある

である。
従って、変数やプロパティが現在利用できないことを明示的に指定するなら、

hoge = null;

と指定するべき。

hoge = undefined;

はNG。



ちなみに、

```
var hoge = null;
```

としたとき、

```
hoge === undefined;  // false
```

となるが、

```
hoge == undefined; // true
```

になってしまうため注意が必要。
SIM supl追跡

flameはQualcomm MSM8210 Snapdragonだという記載を見かける[*1](https://blog.mozilla.org/blog/2014/02/23/new-developer-hardware-and-tools-show-firefox-os-ecosystem-momentum-2/)[*2](http://en.wikipedia.org/wiki/List_of_Firefox_OS_devices) のだが、`adb shell`で`dmesg`してみると私のは MSM8610v2 らしい。

```
<4>[    0.000000] CPU: ARMv7 Processor [410fc073] revision 3 (ARMv7), cr=10c5387d
<4>[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
<6>[    0.000000] Machine: Qualcomm MSM 8610 (Flattened Device Tree), model: Qualcomm MSM 8610v2 QRD SKUAA
:
:
```

[前回](http://qiita.com/kwi/items/449c38d56478679f3917)の続き。SIMの`supl`について追いかけてみた。GonkGPSGeolocationProvider などで `AGPS_RIL_NETWORK_TYPE_MOBILE_SUPL` として現れてくる。そのイベント通知元を次に追いかけてみる。まず`/dev/__properties__`を眺めてみると、`ro.baseband`は`msm`らしい。なので、STR_APQ ではない。`TARGET_MSM_NO_SSC` に行き着くようだ。で、これは`GNSS_MSM`の`NO_SSC`で、`GNSS_MSM` から先は `vendor/t2m/flame/proprietary/libgps.utils.so` の中にあるようだ。ここからは壁に阻まれてよくわからん…。
CloudFrontの注意点

CloudFrontを適用したら、機能していたサイトが動かなくなった(´・ω・`)
例えば、言語による処理の切り替えが、うまく動かなくなったとか。。。

そんなときは、HTTPヘッダを疑ってみる。


CloudFrontはそのままでは、転送しないHTTPヘッダがある。
転送するHTTPヘッダを追加してやる必要がある。

![AWS_CloudFront_Management_Console.png](https://qiita-image-store.s3.amazonaws.com/0/51320/402debf2-dad7-36ce-e31e-bcfda4789bd3.png)



1年以上放置された、彼が救われることを願う↓
https://forums.aws.amazon.com/thread.jspa?messageID=538744&tstart=0
sublコマンドの感動を教えたい！mac版




*sublimeText*を愛してやまない君たちに伝えたいことがある。
---

####ターミナル.appを開いて以下のコマンドを入力して下さい。

```bash
subl -h
```
　


以下のような内容が表示されればもう伝えることは何も無い。
早くここから立ち去るのだぁxaxaxa

```bash
Sublime Text 2 Build 2221

Usage: subl [arguments] [files]         edit the given files
   or: subl [arguments] [directories]   open the given directories
   or: subl [arguments] -               edit stdin

Arguments:
  --project <project>: Load the given project
  --command <command>: Run the given command
  -n or --new-window:  Open a new window
  -a or --add:         Add folders to the current window
  -w or --wait:        Wait for the files to be closed before returning
  -b or --background:  Don't activate the application
  -s or --stay:        Keep the application activated after closing the file
  -h or --help:        Show help (this message) and exit
  -v or --version:     Show version and exit

--wait is implied if reading from stdin. Use --stay to not switch back
to the terminal when a file is closed (only relevant if waiting for a file).

Filenames may be given a :line or :line:column suffix to open at a specific
location.

```
  
 
 
さて、ではsublのコマンドをインストールする。
以下の魔法の言葉をターミナルにコピペするべし。

```bash
sudo ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" /usr/bin/subl
```

パスワードを聞かれたら入力！

さてこれで

```bash
subl -h
```

を実行したらヘルプ画面がみれるかな？


これでターミナルからsublimeText2が開けるようになりました。

このコマンドの便利な使いどころは
RubyOnRailsなどアプリケーションを作成した際に
アプリケーションフォルダの階層で

```bash
subl .
```

と入力するとカレントディレクトリ配下がsublimeTextで編集できるようになります。

　
はじめて subl . を実行した時の感動はやばかった！
これで作業スピードがかなりはやくなりました〜！
[javascript]ProxyAPIで遊ぶ

急に思いついた一発ネタです。
現時点ではFirefoxでしか動きません

```js:to2dArray.js
function to2dArray(array, width){
	return new Proxy({}, {
		get: function(_, x){
			x = Number(x);
			return new Proxy({},{
				get: function(_, y){
					y = Number(y);
					return array[x % width + y * width];
				},
				set: function(_, y, value){
					y = Number(y);
					array[x % width + y * width] = value;
				}
			});
		}
	});
}
```

こんな感じで使うことができます。

```js
var array = [];
// データをセット
for(var i = 0;i < 100;i++){
    array[i] = i;
}
//横幅を10にセット
var array2d = to2dArray(array, 10);
// x = 3, y = 2の値を取得,  23
console.log(array2d[3][2]);
// x = 9, y = 9に値をセット
array2d[9][9] = -100;
// -100
console.log(array[99]);    
```
いまの時代、JavaScript側でQRコードを生成できるんですね


ということで、試してみた。手を抜くために、[angular-qr](https://github.com/janantala/angular-qr) というのを使いました。

# 結果(デモ)

- 今回、作ったものの ⇒ http://hkusu.github.io/AngularJS_QR_demo/
	- 英数字を入力すると、リアルタイムでQRコードが生成されます。

# 導入手順

## 前提

- 開発環境 は Mac OS X (Mavericks) です。
- AnuglarJS の環境構築は、Yeoman と generator-angular を使いました。
	- 雛型を作るまでの手順は、前に投稿したこちらと同じ感じ。
		- [AngularJS の Yeoman雛型に Application Cache を導入](http://qiita.com/hkusu/items/29d45bc21465e2713bb1)

## 手順(AngularJSの雛型の生成後)

- Bower で angular-qr をインストール

	```shell
	$ bower install angular-qr --save
	```

- `$ grunt bower-install` とするか、もしくは index.html に下記を追記します。

	```html:app/index.html
    <script src="bower_components/qrcode/lib/qrcode.js"></script>
    <script src="bower_components/angular-qr/src/angular-qr.js"></script>
	```

- AngularJS に組み込み

	```diff:app/scripts/app.js
	'use strict';
	
	angular.module('qrTestApp', [
	  'ngCookies',
	  'ngResource',
	  'ngSanitize',
	  'ngRoute',
	+  'ja.qr'
	])
	〜
	```

- この状態で使えるようになっているはずなので、後は Controller と View を書きます。

	```javascript:app/scripts/controllers/main.js
	'use strict';
	
	angular.module('qrTestApp')
	  .controller('MainCtrl', ['$scope', function ($scope) {
	
	    $scope.string = '';
	
	  }]);
	```

	```html:app/views/main.html
	<div ng-controller="MainCtrl">
	    <div class="header">
	      <h3 class="text-muted">QRコードのテスト</h3>
	    </div>
	    <p>
	        <input type="text" placeholder="http:// ※日本語はNG" size="30" ng-model="string">
	    </p>
	    <br>
	    <p>
	        <qr text="string" size="150"></qr>
	    </p>
	</div>
	```

- 以上！

# ほか

- 今回のソースはこちらに置いておきます。
	- https://github.com/hkusu/AngularJS_QR_demo
SASS/Compassで共通ライブラリにしとくと便利なもの

# 対象

デザインする人なので、そういうニーズが中心です。
タイポグラフィや色彩を実装する上で便利な変数値や関数をまとめます。

# タイポグラフィ

## フォント単体での変数化

これくらい決めておけば、iOSでもOSXのどのブラウザでも指定した書体になってくれるはず!

```scss
$font-hiragino-kakugo: 'Hiragino Kaku Gothic ProN', 'ヒラギノ角ゴ ProN';
$font-hiragino-mincho: 'Hiragino Mincho ProN', 'ヒラギノ明朝 ProN';
$font-meiryo: Meiryo, 'メイリオ';
$font-yu-gothic: '游ゴシック体', 'YuGothic', '游ゴシック', 'Yu Gothic';
$font-yu-mincho: '游明朝体', '游明朝', YuMincho, 'Yu Mincho';
$font-ms-mincho: 'ＭＳ Ｐ明朝', 'MS PMincho';
```

## NeueHelvetica系の細かいウエイト

CondensedBoldなのかCondensed-Boldなのかで悩む時間がもったいないので、これも変数化!

```scss
$font-helvetica-neue-ultra-light: 'HelveticaNeue-UltraLight';
$font-helvetica-neue-condensed-bold: 'HelveticaNeue-CondensedBold';
$font-helvetica-neue-bold-italic: 'HelveticaNeue-BoldItalic';
$font-helvetica-neue-light-italic: 'HelveticaNeue-LightItalic';
```
## 日本語系ゴシックセット／明朝セット

上述の変数を前提とするので注意

```scss
$fonts-sans-jp: #{$font-hiragino-kakugo}, #{font-meiryo}, sans-serif;
$fonts-serif-jp: #{$font-hiragino-mincho}, #{$font-yu-mincho}, serif;
```

# 色彩

## 任意のカラー値を元に、明度が1%刻みで異なるカラー値を生成して簡単に呼び出せる仕組み

IllustratorやInDesignのスウォッチ濃度みたいに、無彩色を直感的に1%刻みで使いたいという思いがあったので、以下のような関数を組み合わせてみた。
map型に対応した、割と新しいバージョンじゃないとサポートしてない

```scss
// 明るさの違うカラー値を1%刻みで生成(徐々に明度が上昇)
//
// ### [function] gen-brightness-map($color, $step: 100)
//
// * $color - 100%のベースカラー(color)<br />
// * $step - ステップ数。デフォルトは100(number)
// * 返り値 - map型。 get-map($map, 95); などの形で使用
//

@function gen-brightness-map($color) {
  // $colorは、入力値が最も暗い色になる
  $step: 100;
  $map: (0: $color);
  @for $i from 1 through $step {
    $p: percentage($i * 0.01);
    $c: lighten($color, $p);
    $m: (#{$i}: $c);
    $map: map-merge($map, $m);
  }
  @return $map;
}

// 任意のグレー値を生成
//
// ### [function] get-gray($percent)
//
// 引数(パーセント)で受け取った値の明さで無彩色を返す
// * $percent - 0から100までの整数(number)
// * 返り値 - 無彩色(color)
//

$gray-map: gen-brightness-map(#000) !default;

@function get-gray($percent) {
  $gray: map-get($gray-map, #{$percent});
  @return $gray;
}
```

上記を読み込んでおく。使い方は以下の通り

```scss

.hoge {
  border-color: get-gray(98); // HSBで言うと H:0, S:0, B:98% のグレー
}

//変数に入れるとより直感的
$gray-bkg: get-gray(98);
$gray-border: get-gray(96);

.hage {
  border-color: $gray-border;
  background-color: $gray-bkg;
}
```

これを応用して、InDesignの濃度スウォッチみたいなことがCSSでできるととても便利なのだが…。
Android Studioでaidlファイルを認識させる

#aidlファイルの作成
New->aidlから、IMyAidlInterface.aidlファイルを作成する。

```IMyAidlInterface.aidl
interface IMyAidlInterface {
    /**
     * Demonstrates some basic types that you can use as parameters
     * and return values in AIDL.
     */
    void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,
            double aDouble, String aString);
}
```

#build.gradleの編集
Android Studio 1.0.2, gradle plugin 1.0.0, build tools 21.1.2以降の組み合わせでは、特に設定しなくても認識されています。

~~ファイルを作成しただけではAndroid Studio上で認識されない。
build.gradleファイルに下記のコードを追加する。~~

```
    sourceSets{
        main{
            aidl.srcDirs = ['src/main/aidl']
        }
    }
```

~~追加した例~~

```build.gradle
apply plugin: 'com.android.application'

android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"

    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 19
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets{
        main{
            aidl.srcDirs = ['src/main/aidl']
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
```
[ruby]mecabとnattoを使用して形態素解析してみた

100文字の文字列をnattoを使用して形態素解析してみました。
形態素解析エンジンにはmecabを使用。
文章を解析して配列に入れるとこまでを1万回繰り返しました。
VM上でやっています。数値は参考程度に。

```lang:ruby
equire 'benchmark'
require 'natto'

text = "人は歩みをとめたときに、そして挑戦をあきらめた時に年老いていくのだと思います。この道を行けばどうなるものか、危ぶむなかれ。危ぶめば道はなし。踏み出せばその一足が道となる。迷わず行けよ。行けばわかるさ。"

Benchmark.bm(7) do |x|
  x.report("natto") {
    10000.times do
      arr=Array.new
      nm = Natto::MeCab.new
      nm.parse(text) do |n|
        arr<<n.surface
      end
    end
  }
end
```

* 結果

|  | user | system |   total  |  real |
|:---------:|:---------:|:---------:|:---------:|:---------:|
| natto  |  10.780000 |  3.940000 | 14.720000 | 14.749078|

ちなみに
arrの値は
["人", "は", "歩み", "を", "とめ", "た", "とき", "に", "、", "そして", "挑戦", "を", "あきらめ", "た", "時", "に", "年老い", "て", "いく", "の", "だ", "と", "思い", "ます", "。", "この", "道", "を", "行け", "ば", "どう", "なる", "もの", "か", "、", "危ぶむ", "なかれ", "。", "危ぶめ", "ば", "道", "は", "なし", "。", "踏み出せ", "ば", "その", "一足", "が", "道", "と", "なる", "。", "迷わ", "ず", "行け", "よ", "。", "行け", "ば", "わかる", "さ", "。", nil]

* 使用PC

MacBook Air
CPU: Intel Corei7 1.8GHz
Memory: 4GB
の上にVMをたてて500MBを割当て。
VimでDartを書いてる人はpubspec.yamlのテンプレートを用意しておくと便利

DartにはDartEditorという公式の開発環境がありますが、それを使わずにVimやEmacsなどのエディタを使ってDartを書いてる人も多いと思います。
Dartを書くとき、Dartの公式パッケージツールであるpubをインストールする為にpubspec.yamlを書く必要がありますが、DartEditorは簡単にpubspec.yamlを記述できるのですが、他のものだと全て手打ちになってしまいます。
なので、最初にテンプレートを作ってそれを読み込ませるようにすれば、多少は作業が捗りますし、「どうやって書くんだっけ」と、[pubspec.yamlのフォーマット](https://www.dartlang.org/tools/pub/pubspec.html)をいちいち見なくて済むので、多少は楽になります。(といってもすでにやっている方一杯いらっしゃると思いますが...)

##設定の仕方(vim版)

.vimrcに以下の記述をします。

```vim
au BufNewFile pubspec.yaml 0r $HOME/.vim/template/pubspec.yaml
```

そのあと、~/.vim/template/pubspec.yamlを記述します。

```yaml:pubspec.yaml
name:
version:
description:
author:
homepage:
dependencies:
```

authorの部分は最初から記述してしまってもいいかもしれません。また、pubspecで記述していない項があっても、 `pub get`は正常に動くようなので、書かない部分も最初から設定してしまって構わないと思います。
ESCR Ver. 2.0 正誤表の追加正誤表

ESCR Ver.2.0：【改訂版】組込みソフトウェア開発向け コーディング作法ガイド［C言語版］Ver.2.0
[http://www.ipa.go.jp/sec/publish/tn13-001.html](http://www.ipa.go.jp/sec/publish/tn13-001.html)

の正誤表が、こちらに

「ESCR Ver. 2.0」 正誤表 (2014.8.8)
http://www.ipa.go.jp/files/000040894.pdf

公開されている。が、そのほかにもう少し間違っているので、ここにメモしておく。

| ページ番号 | ルール番号 | 正誤 |
|:-----------|:-----------|:-----------|
| 7       | Ver.1.1からの<br>変更点について |    誤：追加になったルールは、R1.3.4、R3.1.3、R3.1.4、M4.7.7で、<br>正：追加になったルールは、R1.3.4、R3.1.3、R3.1.4、R.3.6.3、M4.7.7で、     |
| 23 | ナル文字 | 誤："\0"<br>正：'\0' |
| 30 | R1.3.2 | 適合例5行目が、M1.2.1(1)不適合 |
| 34 | R2.1.3 | 誤：var1.a==var2.a && var1.b == var2.b<br>正:var1.c==var2.c && var1.l == var2.l |
| 50 | R3.1.3 | 誤：最大のインデックスとして決定される<br>正：最大のインデックス＋１として決定される |
| 52 | R3.2.1 | 不適合例、適合例ともに、x,yとansの型を明示すべき。<br>yが浮動小数点型(float)の場合は、0.0Fと非等価の比較をしても良いか？<br>if (y != 0.0F) |
| 52 | R3.2.1 | 適合例が、M2.1.2に不適合 |
| 52 | R3.2.2 | 適合例が、M2.1.2に不適合 |
| 53 | R3.3.1 | 適合例が、M2.1.2に不適合 |
| 54 | R3.3.2 | 適合例が、M2.1.2に不適合 |
| 72 | M1.6.2 | 適合例、不適合例ともに、INTの値が未定義 |
| 111 | M4.7.2 | 適合例で、#ifdef AAA が、コメント通り、AAAが定義されているか判定しているなら、<br>M4.7.3に従って、#if defined(AAA)と書くべき |