OmniAICreator/Qiita-1.07M huggingface dataset:
SceneとGameのカメラを同じにするアセット(SceneCameraTool)

<h2>Scene Camera Tool</h2>

<a href="https://www.assetstore.unity3d.com/jp/#!/content/10687"  target="_blank" rel="lightbox"><img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog6-1-1024x502.png" width="500px" alt="blog6-1" title="blog6-1" /></a>

<h2>環境</h2>
環境はmac Unity5.4.1f1

<h2>インポートしたところ</h2>
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog6-2.png" width="300px"/>

<h2>何ができるか</h2>
SceneとGameのカメラの位置をボタン一つで合わせたりできる便利アセットです。
Scene上で見ている位置にカメラを配置できるのでカメラの角度などの設定などの煩わしさとこれでおさらばできます。
3Dのゲームを作る時やムービーなどのカメラ位置を設定する際にはこれがないと・・・と思うアセット。

<h2>使い方</h2>
使い方はシンプル。
インポートするとWindow->Scene Camera Toolというメニューが追加されるのでこれをクリックするとウィンドウが出ます。
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog6-3.png" width="150px"/>
動かしたいカメラを設定して、あとはボタンやチェックボックスをいじるだけ。
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog6-4.png" width="400px"/>

Camera To Scene View:Sceneビューと同じ位置に選択されているカメラの位置、角度などを合わせる
Scene View To Camera:Gameのカメラの映している状態にSceneビューをしてくれる
Interactive in Play Mode：これにチェックを入れると実行中常にSceneビューとGameビューのカメラ位置が合う
Use Undo for Camera:Undoが出来る
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog6-1.gif" width="600px"/>

これでもうカメラの微妙な位置調整に時間を取られない!
TileMaker

<h2>Tile Tool</h2>
<a href="https://www.assetstore.unity3d.com/jp/#!/content/19904"  target="_blank" rel="lightbox"><img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-1.png" width="500px" alt="blog15-1" title="blog15-1" /></a>

<h2>何ができるか</h2>
3Dのマップを作成できるツール。
また、画面から見えないメッシュの削除や、一つにまとめるなどもできる
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-4.png" height="200px"/><img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-5.png" height="200px"/>

<h2>環境</h2>
mac Unity5.4.1f1

<h2>インポートしたところ</h2>
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-2.png" width="300px"/>

<h2>TileToolのwindowの使い方</h2>

WindowにTileToolが追加されるのでこれを選ぶ
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-3.png" />

するとこんなウィンドウが表示されます。
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-6.png" />

TileStypes:タイルの変更
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-1.gif" width="400px"/>

Move&Duplicate:移動と複製しながら移動。
左が移動。右側のが複製しつつ移動
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-2.gif" />

Remove Hidden Sides:見えない部分のメッシュを自動で削除
Auto Destroyで自動でやってくれる。
気に入らなかったらReset Sidesで戻せます。
左のボタンで１箇所ずつ消すことも可能
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-3.gif" />

Grouping:グループ化
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-4.gif" />

Replace GameObjects:セットしたprefabに選択したオブジェクトを差し替える
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-5.gif" />

Snapping:グリッドでの移動や、半端な位置になっているオブジェクトをまとめてスナップしたりできる
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-6.gif" />

<h2>メッシュをまとめる　Simple Mesh Combine</h2>
こちらのアセットが含まれてます
<a href="https://www.assetstore.unity3d.com/jp/#!/content/8748" target="_blank">Simple Mesh Combine</a>
TileToolでグループ化したオブジェクトに Simple Mesh Combine.csをアタッチ。
Combineを実行します。
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-7.png" />

するとSavemesh ExportObjなどのボタンが増えるのでそれぞれ保存します。
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-11.png" />

こんな感じでできます。
できたものはmaterialにテクスチャがアタッチされていないので
TexturesフォルダにあるTileTool Main TEXなどをアタッチしてあげればOK
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-9.png" />
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-8.png" />

こちらがまとまったメッシュ。
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-10.png" />

<h2>SimpleRenameTool</h2>
こちらのアセットが含まれてます
<a href="https://www.assetstore.unity3d.com/jp/#!/content/19951" target="_blank">Simple Rename Tool</a>
Window->SimpleRenameToolこれが名前変更や連番をつけたりするのに便利です。
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-13.png" />
こちらがウィンドウ。
Replaceや連番をつけたりが一気にできるので地味に便利。
ファイルもSimpleRenameTool.csだけのインポートだけで使えます。
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog15-12.png" />
SAColliderBuilderでスキンメッシュに当たり判定を付ける

##SAColliderBuilder
<a href="https://www.assetstore.unity3d.com/jp/#!/content/15058"  target="_blank" rel="lightbox"><img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-1.png" width="500px" alt="blog5-1" title="blog5-1" /></a>

何ができるの？
スキンメッシュの形に合わせたboxやmeshのコリダーを生成できます。
なので複雑な形状の当たり判定が必要でかつアニメーションするものにはピッタリです。
また、分割数など調整できます。

<h2>環境</h2> 
mac。Unityのバージョンは5.4.1f1

<h3>インポートしたところ</h3>
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-2.png">
これの素敵なところは日本語のマニュアルがバッチリ入っているところ。
これがあれば使い方はバッチリ！

せっかくなのでboxとかスフィアコリダーなどでは対応できなそうな、ドラゴンのモデルに当たり判定をつけます。
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-1.gif">

使い方としては
MeshFilter または SkinnedMeshRenderer を自身または子にもつオブジェクトにSABoneColliderBuilder.csをアタッチ。
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-2.png">

あとはインスペクタを希望どうりにいじってProcessで作れます。
Shape Type がBoxとかMeshとかあるので好きなものを選びましょう。
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-3.png" width="300px" />

<h2>5系で使う時の注意</h2>
このアセット、5系でリリースされていないです。
そのためか、このバージョンで落としてくるとProcessボタンを押しても何の反応もしないという現象が発生します。
エラーログも出ないので解析がめんどくさいなと思い、Unity4.7を起動、そちらでインポートしたアセットを5.4に持ってきたら動きました。

<h2>実行結果</h2>
左がShapeType box 右が ShapeType Mesh Max Trianglesは32に設定したもの
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-2.gif"><img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-3.gif">
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-5.png" width="300px" /><img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-4.png" width="300px" />

こんな感じでアニメーションにピッタリくっついてくれる当たり判定が作成できます。
コリダーは各ボーンの子に配置されます。
このままだと当たり判定の数が多すぎるので間引いたりする作業がこのあとに入ります
試しにドラゴンの頭のあたり判定を適当にスフィアとかに修正してみます
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-4.gif" width="300px" />
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-6.png" />

ドラゴンのコリダーは顎と頭二つあります。ヒエラルキーのBip-01 Headを選択して
Recursiveryにチェックをいれてcleanup
これで頭のコリダーだけHead以下のコリダーが無くなります
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-7.png" />

そうしたらまたHeadを選択して Recursiveryのチェックを外し、好きな形状などを設定してProcess
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-8.png" width="300"/>

足などもこんな感じでboxに修正したり、好きな感じに修正できます。
<img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-9.png" width="300"/><img src="http://ayumegu.jp/wp-content/uploads/2016/10/blog5-10.png" width="300"/>

部位ごとにある程度複雑な当たり判定が必要な場合、このアセットは便利。
今回はここまで
Swiftでの簡単なカウントアプリの開発(初心者向け）

#Swiftで簡単なカウントアプリを作る
ボタンを押すと数が追加されるようなカウントアプリを作っていこうと思います。
##1ストーリーボードに部品を配置していく
まずストーリーボードにLabelとButtonを配置する。
<img width="496" alt="“picture” 2016-11-27 12.05.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/135508/2e579c63-bce7-0af6-bf49-c7b64b455cbd.png">
##2ViewController.swiftにコードを書いていく
いよいよコードを書いていきます

```swift:ViewController.swift
import UIKit

class ViewController: UIViewController {
        //numberというInt型の（整数の型の)変数を作る
    var number:Int! = 0
　　　　　　　　　　　　　　　 //Labelをコードから変更できるようにする
    @IBOutlet weak var label:UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
　　　　　　　　　　　　　　　　//Botanを押した時のアクションを書く
    @IBAction func button (){
　　　　　　　　　　　　　　　　//numberという変数にnumberに１を足したものを代入する
        number = number + 1
　　　　　　　　　　　　　　　　//labelに表示できるようにnumberをInt型（整数の型)からString型(文字列の型)にかえ、labelに代入する
        label.text = String(number)
        
        
    }


}
```
これでコードは終わりです。
###コードについての補足
**変数とは数値などの入れ物**のことです。
またプログラミングでの＝の記号は**等号ではなくA　=　Bの場合AにBを代入する**ということになります。


##コードと配置した部品を関連付ける
部品を置きコードを書いただけではダメで、コードと部品を関連づけなければ行けません。
###関連付けのやり方
1. 上のところを押す![“picture”-2016-11-27-12.29.29.png](https://qiita-image-store.s3.amazonaws.com/0/135508/64086f01-4e68-31a1-e3df-07255ee3e223.png)
2. 矢印のボタンを押す

![s.png](https://qiita-image-store.s3.amazonaws.com/0/135508/f330705e-bfcd-dc00-11a8-00545389097c.png)
3. OutletsのところにあるlabelのHideを押し、引っ張って来る![sada.png](https://qiita-image-store.s3.amazonaws.com/0/135508/ac5c366e-1bd0-f464-6c8c-847d445b1efe.png)
4. Buttonも同じようにつなげる。関連付けしようとした時に出て来るものはTouchUpInsiedを選ぶ

##完成！
完成したので左上のRunボタンを押して実行！

<img width="376" alt="“picture” 2016-11-27 12.51.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/135508/bcaf9ef8-9624-81aa-4f8b-73db10d5b7a9.png">


**これで完成ですがこれはごく簡単なものです。各自改良してもっと良いものを作ってみてください。**
bitnami RedmineでSCM Creator入れたらinternal error

とりあえず備忘録
環境
さくらVPS 2core 1GB
CentOS7.2
bitnami-redmine-3.3.1-0

bitnami RedmineでSCM Creatorを入れてプロジェクトを開こうとしたら
internal errorが出てしまった。
ログ
/opt/redmine/apps/redmine/htdocs/log/production.log
を見てみると
ActionView::Template::Error ((/opt/redmine/apps/redmine/htdocs/config/scm.yml): mapping values are not allowed in this context at line 19 column 8):
という一文が

を開き該当箇所を確認


```/opt/redmine/apps/redmine/htdocs/config/scm.yml

  git:
   path: /opt/bitnami/repos/git
    git:  /opt/redmine/git/bin/git
    options: --bare
    url: git
```

を

```/opt/redmine/apps/redmine/htdocs/config/scm.yml

  git:
    path: /opt/bitnami/repos/git ←下の行とインデントを揃える
    git:  /opt/redmine/git/bin/git
    options: --bare
    url: git
```

にすると、治った。
複数のcsvファイルを結合するバッチ（1個目のファイル以外は1行目を削除）

複数のcsvファイルを結合するバッチファイルを書いてみました。
それぞれの1行目にあるヘッダー行は要らないので削除します。
でも出力するファイルにはヘッダー行が欲しいので、ループの1ファイル目のヘッダーを挿入しています。

```bat:join.bat
@echo off
setlocal enabledelayedexpansion

set /a counter=0

for /f %%i in ('dir /b *.csv') do (

	echo %%i
	if !counter!==0 (
		set /p _head=<%%i
		echo !_head!>>result.csv
	)
	set /a counter=!counter!+1

	for /f "tokens=* skip=1" %%b in (%%i) do (
		echo %%b>>result.csv
	)
)
pause
```

わかりにくかったのは遅延環境変数というもの。
```
setlocal enabledelayedexpansion
```
と書いて、変数名を「!」で囲う必要がありました。
画像の平均作成、標準化、畳み込みの結果をもとにソート【kadenzeCADL 1】

# はじめに
kadenzeの[CREATIVE APPLICATIONS OF DEEP LEARNING WITH TENSORFLOW](https://www.kadenze.com/courses/creative-applications-of-deep-learning-with-tensorflow/info)を受けています。

session1の[課題](https://github.com/pkmital/CADL/blob/master/session-1/session-1.ipynb)を行ったので何をしたかメモ。

もととした画像は、いらすとやさんの[いろんな顔アイコン](http://www.irasutoya.com/2014/10/faceicons.html)から100枚ほどお借りしました。
ありがとうございます。

![dataset.png](https://qiita-image-store.s3.amazonaws.com/0/82763/cfe25435-e3fd-b0f1-c5c6-e8b129ab2bae.png)


# 平均画像の作成


![mean.png](https://qiita-image-store.s3.amazonaws.com/0/82763/8de07d39-adb6-cab2-6d2c-4cd6335986f7.png)

顔のようなものは認識できますね。
もとにした画像がスーツが多めだったので、それが色濃く出てしまっているように思います。

# 標準偏差を可視化

![std.png](https://qiita-image-store.s3.amazonaws.com/0/82763/102b4e68-97ff-77b9-3f6c-7e28720abb50.png)

中心部分は肌色が多い為、差が小さくなっているようです。


# 標準化した画像
![normalized.png](https://qiita-image-store.s3.amazonaws.com/0/82763/425d6094-9360-7d6a-3955-9190ec03c4a8.png)

右端の下から3列目の髭のおじさんが際立っているように見えます。

# カーネルで畳み込み

カーネルは下記。

![kernel.png](https://qiita-image-store.s3.amazonaws.com/0/82763/df9b245e-357b-1366-a67a-660d6007ff6b.png)

# 畳み込みの結果をもとにソート

![sorted.png](https://qiita-image-store.s3.amazonaws.com/0/82763/73c49555-1508-30e0-7bef-bde5b4c6f23c.png)

これをどう解釈すれば良いのかわかりませんでしたが、ソートの結果、上部に若い人のアイコン、下部に年上の人のアイコンが並んでいるように思います。

# コード

[Github](https://github.com/takitsuba/kadenze_cadl/blob/master/session-1/session-1.ipynb)においてあります。

また、つまづいたところも別途Qiitaにあげてます。

[KadenzeのCADLコース session1 で normalized.png が真っ黒になる](http://qiita.com/tackey/items/34bede77a4e1c00dd411)

ありがとうございました。
UITextField に Focus が当たった時に、文字を選択済みの状態にする

## UITextField の文字を選択済みにする

Focus 当たったら下記の画像のような状態になっててほしい。

![unspecified.png](https://qiita-image-store.s3.amazonaws.com/0/5678/8b769bbc-2142-0676-91f1-8b124701aaa6.png)

## textField.selectAll

`selectAll` というメソッドで実現できる。
引数に `self` を渡すと、コピーとかカットの選択肢が表示される。

```swift
textField.selectAll(nil)
textField.selectAll(self)
```

## 2 回に 1 回しか選択済みにならない問題

textField に Focus が当たった時に選択済みにするために、 `UITextFieldDelegate` を使い下記のように書いていた。

```swift
    func textFieldDidBeginEditing(_ textField: UITextField) {
        textField.selectAll(nil)
    }
```

ただし、この書き方だと 2 回に 1 回しか選択済みになってくれない。
その時は、下記のように遅延させて selectAll すると上手くいく。


```swift
    func textFieldDidBeginEditing(_ textField: UITextField) {
        textField.perform(#selector(selectAll(_:)), with: nil, afterDelay: 0.1)
        // 選択肢出したい場合はこっち
        // textField.perform(#selector(selectAll(_:)), with: self, afterDelay: 0.1)
    }
```

本当なら dispatch 的なので書いたほうが良いかもしれないが、今のところ afterDelay で動作には問題無い。

## 参考

[iphone \- selectall uitextfield does not always select all \- Stack Overflow](http://stackoverflow.com/questions/12666834/selectall-uitextfield-does-not-always-select-all)
Eclipse(Ultimate)に内蔵されてるminGWファイルって上書きしてOKですか？

プログラミング初心者です。訳あって、いきなりC言語から始めることになりました。
「一週間で身につくC言語の基本」　http://c-lang.sevendays-study.com/index.html
というサイトの誘導に乗るがまま、

Eclipse　http://mergedoc.osdn.jp/
という開発環境を手に入れて、
とある個人サイト（://gabekore.org/windows-c-eclipse　直リンクは回避）で、
MinGW　http://www.mingw.org/
も必要だと説明がありましたので、全部インストールした訳なのですが。

Eclipseまるごとダウンロードしたら、minGWのファイルも
Eclipseフォルダの中にトッピングされてるじゃないですか。
![Eclipse.JPG](https://qiita-image-store.s3.amazonaws.com/0/151325/397a3c3d-a18a-8334-896a-dba013e226a4.jpeg)

でも、http://www.mingw.org/
から直接ダウンロードすると、また別のMinGWフォルダ
![Cドライブ.JPG](https://qiita-image-store.s3.amazonaws.com/0/151325/2ac16168-332b-83b6-98e8-41f0869923ee.jpeg)
が誕生するわけなんですねコレ。

mingw.orgから直入れしたフォルダを使って、
Eclipseフォルダの中にあるminGWフォルダを上書きしちゃっていいのでしょうか？
EclipseでC言語の練習してもバイナリーが無いとかエラーが出るのは
コイツのせいではと推理しています。

お詳しい方、助けてください。なんかもうわかんにゃいです
「いいね」が実装されたので「ストック」を厳選したい

# Qiitaの使い方の変遷

## 「いいね」実装前

- とりあえずナイスと思った記事は片っ端からストック

## 「いいね」実装後

- とりあえずナイスと思った記事は片っ端から**いいね**
- **非常に役に立つ**，もしくはあとで読む記事だけ**ストック**

↓

今までストックしてきた記事がすっげえ邪魔だ！！！！厳選したい！！！！

↓

でも一覧からストック解除できなくて面倒！！！！最悪！！！！

# Qiita Unstocker を作った

- [GitHub - mpyw/qiita-unstocker](https://github.com/mpyw/qiita-unstocker)

![screenshot](https://github.com/mpyw/qiita-unstocker/raw/master/screenshot.png)

一応Qiitaの中の人にも実装リクエスト出しておきましたが，待ちきれないので個人的に作ってしまいました。

**ストック一覧の最終ページに飛んで，<ins>解除しながら手前に戻っていく</ins>やり方がおすすめです。**

# 最後に

この記事はストックしなくていいからね！！！！！！！！！！！！！
新しい技術を調べるときに試したいこと


常に全部できているわけではないが、こういうことを試せばいいのではないかというのをメモ

## 調査
- 公式サイトに書いてある目的とかを読む
- ググる
	- なるべく1年以内の情報から読む
		- [Chromeのデフォルトの検索期間を過去一年にする](http://qiita.com/satzz/items/014675a2e79e403fae80)
	- 同じワードでの検索結果の上位10件くらいを読む
- API referenceを読む
- 何に使われるものなのかを調べる
- 何とよく比較されているのかを調べる
- 他に何と組み合わせることが多いのか、設計・構成を調べる
- Google Trendsで代替技術・周辺技術の利用傾向を見る
- 周辺ライブラリの開発の状況を見る
	- Githubのissueの状態、最終コミット
	- 最近のChangeLog
- 利用状況を見る
	- Githubスター数
	- npmのダウンロード数など
	- Qiitaでよくストックされている記事
	- はてブのホッテントリ
- 誰かに質問できるようなコミュニティやフォーラムがあるか探す
- キーパーソンのブログを熟読する

## 手を動かす
- 作業ディレクトリを作ってgit initする
- 公式チュートリアルを写経する
- スニペット/プロトタイプを作る
	- 何を使って何を作るのかを決める
	- どういうインターフェース・設計・データフローなのかを知る
	- 何をすれば動き、何をしなければ動かないのかを知る
	- 必要以上にいろいろ組み入れない
		- 動きを理解できる最小のコードベースに保つ
	- つまらないものを作る
		- できたものが面白いか、意味があるかに拘泥しない
- ローカルでもよいのでまめにgit commitする
- AWS,Heroku,Netlifyなどのクラウドにデプロイしてみる
	- ローカルでの挙動とどうちがうかしらべる
- メモリ利用量・処理速度に影響しそうなパラメータを変更してみる
- 既存コードベースに適用してみる
- 調べたりコードを書いたらKobitoにメモする
- 他の選択肢と比べてどんなpros/consがあるのかを知る


## 詰まったら

- 複数のプロトタイプをつくり、うまくいく条件をみつける
- デバッガを使う
- ログをよく読む・ログレベルを上げる
- エラーメッセージでググる
- 誰かのサンプルコードをググる
	- 例えばGithubでCodeの検索だけに絞ってライブラリ名などで検索するとだいたいの使い方がわかるので、見比べて問題の切り分けをする
- テストを実行する
- 利用するライブラリのバージョンを上げたり下げたりする
- バグの再現性を調べる
	- いくつか前のコミットに戻ってみる
	- git bisectでバグの混入時点を特定する
	- 最初からやり直してうまくいったら、とりあえず先へ進む
Electronで指定の位置をドラッグ可能にする

Electronのmacアプリ用でフレームレスウィンドウを使う場合、デフォルトではドラッグでアプリを移動できないようになっています。公式のDocsにもありますが、抜粋しておきます。

```css:style.css
#anyID {
    -webkit-app-region: drag
}
```

例えば<code>body</code>などでウィンドウ全体をドラッグ可能にした場合には、ボタンが効かなくなりますので、下記のコードを入れておきます。

```css:style.css
button {
  -webkit-app-region: no-drag;
}
```
ということみたいです。
[Rails]アクセスしてきたドメインによって表示するデータを分けたい

* Rails 5.0.0.1
* Ruby 2.3.1p112

データベースの構成がこんな感じのとき
![Database_post2_ER図_-_Cacoo.png](https://qiita-image-store.s3.amazonaws.com/0/151309/05e06f11-c268-b25d-2efc-ea54461b72ec.png)


1. **サイトA** にアクセスしたときに **商品1** と **商品2** だけを表示
2. **サイトB** にアクセスしたときに **商品3** だけを表示

したい

## model で request 情報を取得できるようにする
```application_controller.rb
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_filter :set_request_filter # 追記

  # 追記
  def set_request_filter
    Thread.current[:request] = request
  end
end

```
コントローラーで request オブジェクトを取得し、 Thread.current[:request] に入れておく
これでモデル内で Thread.current[:request] から request を参照できるようになります



## scope の追加
```site.rb
class Site < ApplicationRecord
  has_many :items

  # ドメイン名に domain カラムのキーワードが存在するデータを取得
  scope :by_domain, lambda { |domain|
    where("? LIKE CONCAT('%', domain, '%')", domain)
  }
end
```


```item.rb
class Item < ApplicationRecord
  belongs_to :site

  # request.host でドメイン名を取得し、Site.by_domain の引数に渡す
  default_scope lambda {
    request = Thread.current[:request]
    return all unless request
    joins(:site).merge(Site.by_domain(request.host))
  }
end
```

Item インスタンス宣言時に、取得するデータを制限しておきたいので default_scope で実装

## 検証
適当にデータを作成します。

```
> site_a = Site.create(name: 'サイトA', domain: 'aaa') # domain はドメイン名に含まれる文字列を指定
> site_b = Site.create(name: 'サイトB', domain: 'bbb') # 上記と同様
> site_a.items.create(name: '商品1')
> site_a.items.create(name: '商品2')
> site_b.items.create(name: '商品3')
```

今回は [pow](http://pow.cx/) を使って検証しました。

```
$ cd ~/.pow 
$ ln -s ~/workspace/demo aaa
$ ln -s ~/workspace/demo bbb
```
ドメイン名は サイトA: `aaa`、サイトB: `bbb` にしておきます

また、Item モデルは事前に scaffold しています

アクセスしてみます
http://aaa.dev/items
![Demo.png](https://qiita-image-store.s3.amazonaws.com/0/151309/54c47ecd-4b63-5407-08f5-5dd1547361cf.png)

http://bbb.dev/items
![Demo.png](https://qiita-image-store.s3.amazonaws.com/0/151309/bcd1d10f-e7b9-adc0-9e3e-6598cdff8409.png)



1. **サイトA** にアクセスしたときに **商品1** と **商品2** だけを表示
2. **サイトB** にアクセスしたときに **商品3** だけを表示

できました

もっといいやり方があるよーな気がする。。

## 参考
http://rails.clickyourstyle.com/articles/29
FreeBSD10.3RにWebminをインストールしたけどrootでログインできなかった件

pkgでWebminをインストール後
ログイン画面の

![Screenshot 2016-11-27 at 085650.jpg](https://qiita-image-store.s3.amazonaws.com/0/80442/1c3623cb-a73b-0f25-9cd3-60343d30f8c4.jpeg)


Username　	
Password

にrootとrootのパスワードを入力したが認証されず。
（設定の段階ではログインネーム、パスワードは設定なし）

色々検索してみましたが、殆どのWebサイトが

Username root

となっている。

##解決策

Username　**admin**
Password　rootのパスワード

で認証。

CentOS6.8ではrootでログインできましたが、FreeBSDはデフォルトでadmin？
【質問】HTML/JavaScriptのiframeタグについてご教授下さい。

HTML/JavaScriptのiframeタグについてご教授下さい。

■実施したい事
iframeでhtmlを取得したいが、
取得したhtmlの中身(cssや画像)は取得させたくない。

■詳細イメージ
①
<iframe src="http://abc.com/sample.html"></iframe>
↓
②
WEBブラウザがhttp://abc.com/sample.htmlへGETリクエストを投げて、
レスポンスが返ってくる
↓
③
WEBブラウザが返ってきたレスポンスをDOMツリーにロードする
↓
④
WEBブラウザがhttp://abc.com/sample.htmlに記載されているcssや画像を取得する

①②は実施させて、
③の前後で処理を中断させて、
④を実施させたくない。

■質問事項
上記を実現させるためにはどのようなHTML/JavaScriptの実装が必要でしょうか？
ご教授下さい。

■思うところ
③のタイミングでイベントを発生させて、
④を無効にするような処理が可能かな？と調べてみましたら、
「DOMContentLoaded」というDOM読み込み完了後に呼ばれるイベントがあったのですが、
うまく使えますでしょうか。

また、<xmp>タグ等を動的に発行して、
取得したhtmlを無効に出来るかな？と思っています、
うまく使えますでしょうか。

また、ブラウザで発生するHTTPリクエストを全てキャッチして、
http://abc.com/sample.htmlに記載されているcssや画像のHTTPリクエストを遮断できないかな？と思っています、いかがでしょうか。

その他、手段は問いません。
実現できる方法をヒントだけでも良いのでご教授下さい。
Ubuntu 起動時にディスクをマウントする

起動時にディスクをマウントする方法について記載。

マウントしたい端末のパスを確認。

```
$sudo fdisk -l
```
例

```
/dev/sda1           32768   124778495    62372864    7  HPFS/NTFS/exFAT
```

上記/dev/sda1は別のディスクに置き換わる可能性があるので、
UUIDで指定する必要があります。
なので、UUIDを確認

```
$sudo blkid /dev/sda1
```

/etc/fstabに起動時のマウント設定を記載

```
$vi /etc/fstab
```

記載例
（ファイルシステムはautoでも行ける模様）

```
UUID=7d9c943f-xxxxxxxxx       /mnt/sd ext4    defaults        0       0
```

再起動

```
$sudo shutdown -r now
```

マウントされているか確認します

```
$sudo cat /etc/mtab
```






補足
/etc/fstabの記載内容の詳細は以下の通り

1列目
デバイス名 

2列目
マウントポイント 

3列目
ファイルシステム 

4列目
マウント時のオプション 

5列目
ファイルシステムをdumpする必要があるか否かの指定
「0」または無記述の場合はdump不要のファイルシステム
であると見なされる。 

6列目
システム起動時にfsckチェックを行うか否かの指定
「0」の場合はチェックを行わない。ルートファイルシステム
でチェックを行う場合は「1」を指定する。
ルートファイルシステム以外でチェックを行う場合は「2」 を指定する。
Windows 10 > link > Windows10が重い、CPU使用率が高い、HDDのアクセスが100%になる原因(簡易版)

Windows10の新規PCの動作がどうも重い。

以下のリンクにあるように自動メンテナンスが関係するのかもしれない。
http://freesoft.tvbok.com/win10/general/windows10_cpu_hdd_100_ex.html

> OSインストール後、およそ10日おきに処理の重い「自動メンテナンス」が走るように感じましたが、回を追う毎にPCへの負荷は軽くなり、Windows10インストールから30～40日経ったあたりからメンテナンスの負荷は気にならないレベルになりました。

...

> という事で、「初回の自動メンテナンスが完全に終了するまで」は、「PCは時々操作不能なまで重くなる場合がある」というのが正解なようです。

とりあえず電源を入れたままPCを放置してみる。

初期不良の切り分け時「HDD不良」「メモリ不良」に加えて「OSメンテナンス中」まで考慮しないといけなくなりそう。

(追記)
メンテナンスが終わったためか、重い様子は見られなくなった。
raspberry pi 1 model bで、node-red　その１４

#概要
raspberry pi 1 model bの、node-redで、shutdownしてみた。

#開発環境
raspberry pi 1 model b
raspbian 2016_09_23 jessie lite

#写真
![down.JPG](https://qiita-image-store.s3.amazonaws.com/0/18104/9c1925bc-777d-ab54-611b-9cb4dbc13a73.jpeg)

#サンプルコード
```
[{"id":"dbdaa31.2a3d76","type":"inject","z":"4f4f703e.a2a9d","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":123,"y":567,"wires":[["d693572.7a80fa8"]]},{"id":"d693572.7a80fa8","type":"exec","z":"4f4f703e.a2a9d","command":"sudo shutdown -h now","addpay":true,"append":"","useSpawn":"","timer":"","name":"down","x":321,"y":568.5,"wires":[[],[],[]]}]

```
raspberry pi 1 model bで、起動時、OLED表示。

#概要
raspberry pi 1 model bで、起動時、OLEDを動かしてみた。

#開発環境
raspberry pi 1 model b
raspbian 2016_09_23 jessie lite

#写真
![MVC-010S.JPG](https://qiita-image-store.s3.amazonaws.com/0/18104/3ceb067a-86c4-b35c-3eba-e7be5c6c709f.jpeg)

#設定
/etc/rc.local
```
sudo python /home/pi/py/start.py
exit 0
```
ADDA > comm.c > ReadField() > Reads a complex field from file 'fname' and stores into 'field'. / xvec

```txt:My_Environment
Ubuntu 14.04 LTS Japanese Remix
on VMWare Fusion v8.5.2 (4635224)
on OS X El Captian v10.11.4

GNU bash, version 4.3.11(1)-release

gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 
(also for g++)
ADDA v.1.3b6
```

This article is related to [ADDA (light scattering simulator based on the discrete dipole approximation)](https://github.com/adda-team/adda/).

Initial Field for the iterative solver can be read from a file as defined below:

```iterative.c
static const char *CalcInitField(double zero_resid,const enum incpol which)
{
    ...
    switch (InitField) {
        ...
        case IF_READ: {
            const char *fname;
            if (which==INCPOL_Y) fname=infi_fnameY;
            else fname=infi_fnameX; // which==INCPOL_X
            ReadField(fname,xvec); // read electric field
            InitFieldfromE(); // transform it into starting vector
            return dyn_sprintf("x_0 = from file %s\n",fname);
        }
        ...
```

The `ReadField()` is defined at `comm.c` as follows:

```comm.c
void ReadField(const char * restrict fname,doublecomplex *restrict field)
/* Reads a complex field from file 'fname' and stores into 'field'.
 *
 * In MPI mode the algorithm is very far from optimal, since the whole 
 * file is read in total nprocs/2 times.
 * However, this is mainly the limitation of the text file (need to test
 *  for blank lines and format consistency).
 * The only feasible way to improve it is to use binary format like NetCDF 
 * (which may work on top of MPI_IO)
 */
{
    ...
```

The `field` is the pointer with which the data read from the file is stored. The `field` is named as `xvec` in the calling function (CalcInitField).

In function header comment of `CalcInitField()`

> At the end of this function **<font color=red>xvec</font>** should contain initial vector for the iterative solver (x_0)
技術英語 > Nothing one kilometer down.

@ Star Trek Voyager > THE THAW

ある惑星の地表面下の探査中にキムが

> Checking below the surface.
Nothing **<font color=red>one kilometer down</font>**.

「地下１ｋｍ」を表すためにdownを使っている。

続きは以下。

> Two kilometers ...
Wait a minute.
I think I've got something.
2.3 kilometers down --
extremely faint bio-signatures.

Raspberry Pi + Piカメラ + 駆動機構で「おうちハック」をしたとして、人が到達しにくい天井裏や床下といった場所に移動していく場合、「10m奥」「10mさらに奥」というのはどう言うのだろうか、とふと疑問に思った。2016年12月号のトランジスタ技術で実際にやっていた。
以下で意味が通じるかは未確認。
> 10 meters further, 10 meters further, ...

http://qiita.com/7of9/items/730e07042798e9d05082
> further down the road
10分でできるOracleXE11g + CentOS docker image作成

:point_right: [Create Oracle XE(CentOS) docker image in ten minutes](https://gist.github.com/ttekun/c42c0703cb3512994ee1b6335c8afa2d):point_left:
CentOS 5/6/7 + Oracle XE 11g Release2 のdocker image作成が 10分でできます！
Thor で作ったサブコマンドを Rspec でテストする


Ruby はあんま経験がなくてハマったのでメモ。

Thor を使って Git 風の CLI ツールを作ってるんですが、そのテストでコマンドラインオプションとかパラメータを渡す方法がよくわかんなくて、ぐぐって出てくる方法もなんだかうまくいかなくて、テストでハマってどうすんのよ状態だったんですが、本家のリポジトリにやまほどサンプルがあった。

https://github.com/erikhuda/thor

まず `spec_helper.rb` に以下のようなメソッドを追加。

```ruby
RSpec.configure do |config|
  ...
  ...

  def capture(stream)
    begin
      stream = stream.to_s
      eval "$#{stream} = StringIO.new"
      yield
      result = eval("$#{stream}").string
    ensure
      eval("$#{stream} = #{stream.upcase}")
    end

    result
  end
end
```

このメソッドは標準出力をキャプチャして変数に放り込むためのメソッドです。

Thor のリポジトリから丸パクリしました。

https://github.com/erikhuda/thor/blob/master/spec/helper.rb

次にテストコードは以下のような感じ。

```ruby
require 'spec_helper'
require 'oreore/cli'
require "json"

describe Oreore::Command do

  it "Tests for the oreore cli" do
    output = capture(:stdout) { Oreore::Command.start( %w[record get --app=5] ) }
    expect( JSON.parse( output ).count ).to be > 0
  end

end
```

この場合、`oreore record get --app=5` みたいなコマンドを想定したテストをしています。

```
$ bundle exec rspec
```

で合格。すっきりした。

あと、コマンドによっては標準エラーを出して死んでもらうケースもあって、そういう場合は以下のような感じ。

```ruby
  it "Incorrect parameters" do
    expect{
      capture(:stderr) {
        Oreore::Command.start( [
          "record",
          "get"
        ] )
      }
    }.to raise_error( SystemExit )
  end
```

`expect` の後のカッコが丸カッコから波カッコにかわるのか。。。
C#の列挙体

拡張メソッドとかLLっぽくて、なかなか楽しい。

```c#
class Program
{
    static void Main(string[] args)
    {
        foreach(EnumNumper e in Enum.GetValues(typeof(EnumNumper)))
        {
            Debug.WriteLine("{0}={1} {2}", e.ToString(), e.ToInt(), e.HasFlg(1));
        }
    }
}

public enum EnumNumper
{
    Zero = 0,
    One = 1,
    Two = 2,
    Three = 4,
    Four = 8,
    Five = 16
}

public static class EnuNumberClass
{
    public static int ToInt(this EnumNumper e)
    {
        return (int)e;
    }
    public static bool HasFlg(this EnumNumper e, int x)
    {
        return ((int)e & x) == 0 ? false : true;
    }
}
```

実行するとこんなかんじ。

```c#
A=0 False
B=1 True
C=2 False
D=4 False
E=8 False
F=16 False
```
行政機関による画像オープンデータサイトのまとめ

# はじめに
行政機関による画像オープンデータサイトをまとめています。情報をお持ちの方は是非コメント下さい！

# 国の機関
|公開機関|サイト名|URL|
|---|---|---|
|経済産業省|PHOTO METI|https://photo.kankouyohou.com/|

# 都道府県
|公開機関|サイト名|URL|
|---|---|---|
|徳島県|徳島県 オープンデータ|https://www.flickr.com/photos/128164790@N08|
|神奈川県|図書館・児童館等に関するオープンデータ|http://www.pref.kanagawa.jp/docs/b8k/cnt/f537652/|
|神奈川県|公園に関するオープンデータ|http://www.pref.kanagawa.jp/docs/b8k/cnt/f536260/|
|富山県|富山県写真集|http://www.pref.toyama.jp/sections/1113/catalog.html|
|静岡県|富山県写真集|http://fugaku3776.okfn.jp/|

# 政令指定都市
|公開機関|サイト名|URL|
|---|---|---|
|金沢市|金沢市画像オープンデータ|http://open-imagedata.city.kanazawa.ishikawa.jp/|
|新潟市|空中写真 オープンデータ|http://ecom-plat.jp/19640616-niigata-eq/index.php?gid=10032|
|新潟市|古町&団五郎イラスト素材ダウンロード|http://www.manganime-niigata.jp/komadan_download.html|
|神戸市|阪神・淡路大震災「1.17の記録」|http://kobe117shinsai.jp/|

# 特別区・行政区
|公開機関|サイト名|URL|
|---|---|---|
|横浜市金沢区|金澤写真アルバム|http://kzp.city.yokohama.lg.jp/|
|横浜市戸塚区|とつかフォトコレクション|http://www.city.yokohama.lg.jp/totsuka/kusei/photo-collection/|
|東京都足立区|足立区画像オープンデータ|https://www.city.adachi.tokyo.jp/ku/koho/opendata/photoindex.html|

# その他市町村
|公開機関|サイト名|URL|
|---|---|---|
|東浦町 (愛知県知多郡)|東浦町画像オープンデータ|http://open-imagedata.town.aichi-higashiura.lg.jp/|
|戸田市 (埼玉県)|戸田市の風景をオープンデータ画像として公開しました。|https://www.city.toda.saitama.jp/soshiki/154/photo-opendatanew.html|
|能美市 (石川県)|能美市画像オープンデータ|https://nomi.podcloud.jp/|
|津山市立図書館 (岡山県)|Public Library of Tsuyama City|https://www.flickr.com/photos/tsuyama-lib/|

# 外郭団体等
|公開機関|サイト名|URL|
|---|---|---|
|(公財)水戸市芸術振興財団|水戸芸術館|https://vault.arttowermito.or.jp/open_images/|

# その他
|公開機関|サイト名|URL|
|---|---|---|
|(一社)オープン・ナレッジ・ファウンデーション・ジャパン|富岳3776景|http://fugaku3776.okfn.jp/|
CocoaPodsのpod installがうまく動かなくなった時に試した事。


[開発中のアプリ](https://appsto.re/jp/bcXh6.i)が古いCocoaPodsを使っていたため、ずっとversion upしていなかったのですが、
バージョンを上げる必要性が出てきたので、久しぶりにpod installを打ったら以下のようなエラーが出るようになりました。

```
$ pod install                                                                                    
Unknown option: -C
usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           [-c name=value] [--help]
           <command> [<args>]
Unknown option: -C
usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           [-c name=value] [--help]
           <command> [<args>]
Setting up CocoaPods master repo
Unknown option: -C
usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           [-c name=value] [--help]
           <command> [<args>]
[!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master-1`.
You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`.
```

# 解決法1 CocoaPodsの入れ直し

色々調べた結果、皆様CocoaPodsの入れ直しで治ったと言う報告が多かったのでやってみる事に。

```
# ファイル削除
rm -rf ~/.cocoapods
rm -rf ~/Library/Caches/CocoaPods

# install
pod setup
```

installが終わったら pod install実行。
... **治らない** ...

# 解決法2 git のversion up

よくよくログを見ると

```
usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           [-c name=value] [--help]
           <command> [<args>]
Unknown option: -C
```

思いっきりGitエラーが出ているので、バージョンをあげます

まず今のGitのバージョン

```
$ git --version
git version 1.8.0
```
...これは古い...

https://git-scm.com/ こちらのサイトに行き、最新版をDLしてきます。

再度バージョン確認

```
$ git --version
git version 2.10.1
```

うまく上げることが出来ました。
もし、install後でも、バージョンが上がっていなければ、参照しているPathが違っているかもしれません。
古いものは

```
/usr/bin/git
```

に入っている可能性があり、新しいものは

```
/usr/local/git/bin
```

に入っていますので、bash等のpathを

```
PATH=/usr/local/git/bin:$PATH
export PATH
```

としておきましょう。

---

この後に、再度pod installを実行した所

```
$pod install
Analyzing dependencies
Downloading dependencies
Installing XXXXXXXX
Installing XXXXXXXX
Installing XXXXXXXX
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There are 4 dependencies from the Podfile and 4 total pods installed.
```

無事installに成功しましたヽ(=´▽`=)ﾉ
Spotify for CentOS7

久しぶりに記事を

最近[Spotify](https://www.spotify.com/jp/)というストリーミングに登録したのでCentOSで環境を整えてみた。
以外に簡単だったけど、リポジトリの登録が必要？
linuxに詳しくないので、間違ってるとか、危険なのかもしれないがクライアントのインストールをしてみた。

https://www.ulyaoth.net/
(参考 https://www.ulyaoth.net/resources/ulyaoth-repository.6/)
↑どんなリポジトリなのかよく分からないが、Spotifyを提供しているみたい
また、いま対応してるディストリビューション
Fedora 19
Fedora 20
Fedora 21
Fedora 22
Fedora 23
Fedora 24
Scientific Linux 6
Scientific Linux 7
RHEL 6
RHEL 7
CentOS 6
CentOS 7
Oracle Linux 6
Oracle Linux 7
Amazon Linux

ここから、スタート

```ruby:リポジトリの登録
yum install https://downloads.ulyaoth.net/rpm/ulyaoth-latest.centos.noarch.rpm
```


```ruby:Spotifyのクライアントをインストール
yum install spotify
```

因みに、私の場合、Spotifyに登録申請して2ヵ月くらいたって、登録完了しました。

以上
LPIC Level2(201&202)に1ヶ月で合格できる方法（実証済み）

[LPIC201](http://qiita.com/mono_cat/items/64a309b9fec1ce9501a0)に引き続き、LPIC202にも合格したので、試験を受けようと思っている人、勉強中の人に向けて流れとコツを伝えます。

**ここに書いてあることを機械的に実施するだけで、合格できると思います。
内容を腑に落ちるまで理解する、といったややこしいプロセスは不要です。**
（本質的にはそうした方が良いというのは承知の上で、試験合格にフォーカスしています）

さて、これから具体的に説明していきます。

***

![index.png](https://qiita-image-store.s3.amazonaws.com/0/117147/eec22c33-c28c-7d8e-41ac-d9939cb6e321.png)


##試験概要
- 90分で60問の問題
- CBT形式でパソコンで実施
- 受験場所は全国のPearsonVueテストセンター
- 繰り返し問題は参照可能
- 合格点は500/800点（約63%）程度
- 回答方式は四者択一、五者択一、複数選択、記入式
- 試験終了時に合否が分かる

一般的なCBT形式ですので、テストセンターで試験を受けたことがある人は
イメージしやすいと思います。

##勉強方法

ここからは、[LPIC201のページ](http://qiita.com/mono_cat/items/64a309b9fec1ce9501a0)で書いたことは割愛し、プラスの部分だけ書いていきます。

学習方法ですが、主に2種類あると思っています。
①繰り返し試験問題集を実施し、パターンを体に染み込ませる。
②内容をひとつひとつ理解し、腹落ちさせる。

どちらが良いかは、みなさんの状況やタイプ、目的によって変わってきますが、
ある程度理解しつつも試験合格を最重要の目的に置く場合、①のほうがオススメかと思います。
②でやりたい方は、以下は読んでいただく必要はありません。以下、①の説明になります。

###Ping-tで演習

![スクリーンショット 2016-09-11 15.18.31.png](https://qiita-image-store.s3.amazonaws.com/0/117147/34c9dddd-d419-4362-89a2-c3cdf8aad7ff.png)


学習方法は、ひたすら「最強WEB問題集LPIC Lv2-202」のコンテンツをやります。
間違えた問題は解説を確認し、まずは全て「銀」にすることを目的にしましょう！
95%以上銀になったら、次はすべて「金」にすることを目指します。

1回20問として、ALL銀まで約50回。ALL金まで約100回を目安にしてください。
理解度や学習期間によって、多少ずれると思います。

1日20問×5回やる場合、このステップは20日でクリアできます。

すべて金にしたら、記述対策にコマ問を50問程度実施しましょう。
記述がからっきしNG、といった状況を避けるのが目的なので、50問程度でOKです。
これも1日でクリアできるでしょう。

###スピードマスターで演習

![sm.jpg](https://qiita-image-store.s3.amazonaws.com/0/117147/8308196f-c637-9e37-8dd6-c04e13dbe69a.jpeg)

スピードマスター、これも必須です。

同じような問題・形式がかなり出ます。
全問題を3周しましょう。
結構ボリュームはありますが、2周目以降は、間違えた問題だけやれば良いので、
多少はスピードアップできます。

休日に集中して実施すれば、1周目は2日。2周目は1日。3周目は1日。
合計4日でクリアできると思います。


####学習時のポイント
- 100点を取る必要はありません。目的は合格ラインを越えることです。
- ここに書いたことを機械的に実施するだけで、体が覚えます。
- 体が覚えれば、同じ角度での主題には対応できます。そして試験はそのパターンが多数です。
- すべての学習は計画的にやると、1ヶ月以内で完了します。遅延なく進めて効率的に資格取得しましょう。



##試験申し込み

目標を立てた合格日の1ヶ月位前に申し込むと、エンドが確定するので良いでしょう。
PearsonVueで申し込みを行います。
（https://www.pearsonvue.co.jp/Clients/LPI.aspx）

###試験コードが複数あるけどどうしたらいいの？
2016/09現在、201、202の試験は2種類あります。

- 117-201	LPI Level 2 Exam 201
- 117-202	LPI Level 2 Exam 202
- 201-400	LPIC-2 Exam 201, Part 1 of 2, version 4.0
- 202-400	LPIC-2 Exam 202, Part 2 of 2, version 4.0

試験選択画面には書いてありませんが、LPIのサイトには、202−400を選ぶように記載されていますので、
202−400を選びます。
（117−202には日本語がありません。。）

http://www.lpi.or.jp/news/information/lpic2.shtml

>2016年 7月 1日に LPICレベル2 の日本語版の試験コード（Exam Code）が以下の
通り変更されました。出題範囲の変更はありません。

><旧> 117-201 → <新> 201-400
<旧> 117-202 → <新> 202-400

###いよいよ受験当日
テストセンターで受験すると、パソコンで問題に回答し、試験後すぐに結果が表示されます。

今回は、
- 学習期間2ヶ月
- Ping-tは上で紹介した状態（ほぼ100%金）
- スピードマスター3週

で、90分中20分で解き終わりました。

結果は、
合格ライン：500点
取得点数：580点
でした。

####試験時のポイント
- 日本語が分かりづらい問題が少しありますが、「English」ボタンをおすと、英語での表示ができますので、そこで確認すると良いでしょう。
- コマンド入力問題の場合、オプション有無は問題をよく読んで回答しましょう。
- 複数選択問題の場合、いくつ選択するのか、問題文をよく読みましょう。


自分を信じてがんばってください！


また、LPIC以外にも、おすすめの資格をまとめていますので、参考にどうぞ！
[新人・若手SEがとっておくべき資格　〜システム運用管理ver〜](http://qiita.com/mono_cat/items/c3b6045015575a28cf85)
EmacsでJSXを書くためのweb-mode設定

# TL;DR

EmacsでJSXを書くために [web-mode](http://web-mode.org/)を導入し各種設定をした。

```el
;; .js, .jsx を web-mode で開く
(add-to-list 'auto-mode-alist '("\\.js[x]?$" . web-mode))

;; 拡張子 .js でもJSX編集モードに
(setq web-mode-content-types-alist
      '(("jsx" . "\\.js[x]?\\'")))

;; インデント
(add-hook 'web-mode-hook
          '(lambda ()
             (setq web-mode-attr-indent-offset nil)
             (setq web-mode-markup-indent-offset 2)
             (setq web-mode-css-indent-offset 2)
             (setq web-mode-code-indent-offset 2)
             (setq web-mode-sql-indent-offset 2)
             (setq indent-tabs-mode nil)
             (setq tab-width 2)
          ))

;; 色
(custom-set-faces
 '(web-mode-doctype-face           ((t (:foreground "#4A8ACA"))))
 '(web-mode-html-tag-face          ((t (:foreground "#4A8ACA"))))
 '(web-mode-html-tag-bracket-face  ((t (:foreground "#4A8ACA"))))
 '(web-mode-html-attr-name-face    ((t (:foreground "#87CEEB"))))
 '(web-mode-html-attr-equal-face   ((t (:foreground "#FFFFFF"))))
 '(web-mode-html-attr-value-face   ((t (:foreground "#D78181"))))
 '(web-mode-comment-face           ((t (:foreground "#587F35"))))
 '(web-mode-server-comment-face    ((t (:foreground "#587F35"))))

 '(web-mode-css-at-rule-face       ((t (:foreground "#DFCF44"))))
 '(web-mode-comment-face           ((t (:foreground "#587F35"))))
 '(web-mode-css-selector-face      ((t (:foreground "#DFCF44"))))
 '(web-mode-css-pseudo-class       ((t (:foreground "#DFCF44"))))
 '(web-mode-css-property-name-face ((t (:foreground "#87CEEB"))))
 '(web-mode-css-string-face        ((t (:foreground "#D78181"))))
 )
```

# 経緯

GitHub Pagesを書くために[r7kamura/katatema](https://github.com/r7kamura/katatema)を使ってみたらReact.jsが使われており、ちょうどいい機会なのでいまさらながら入門してみるか、と思ったらJSXを書く必要があり、Emacsに設定がなかったので調査してみた、というわけ。

こっち界隈には疎いので拡張子 `.js` 拡張子でJSXを書いていいのかどうかはよくわからない。 `katatema` がそうなってるから、という理由でそうしている。

# 理屈と参考資料

## web-modeで `.js` でもJSXのシンタックスハイライトを適用する

- http://cha1tanya.com/2015/06/20/configuring-web-mode-with-jsx.html

`web-mode-content-type` で挙動を制御している。通常のJS編集に戻すには `M-x web-mode-set-content-type` で `javascript` を選んでやればよい。頻繁に切り替えるようなら別の手を考えよう。

## インデント

- http://umi-uyura.hatenablog.com/entry/2015/05/13/214629

デフォルトがだいぶ厳しい感じなのでまるっといただきました :sushi: 

## 色

- http://biwakonbu.com/?p=589

デフォルトが暗めで使いづらいのでまるっといただきました :sushi:
なんちゃってエンジニアの使用ツール紹介

# はじめに

* サーバサイドエンジニア（LL系）あがりのなんちゃってインフラエンジニアである自分の必携ツールをただただ思いつくまま紹介する
* 同じように自分の使っているツールを紹介する記事が増えたら知見が広がっていいんじゃないかという試み
    * 個人的には他の人の物理編（キーボードとかディスプレイとか）のこだわりが見たいかも
* 有料じゃんって言われたら、包丁買わない料理人とかカンナ買わない大工とかが居たとして一緒に働きたいの？って返すことにしてる
* ほとんど Windows で使っている（xmindとかはMacにも入れてるけど）
* Microsoft, Google, Apple, github, CI のサービス、ソフトは脇においておく


# 有料（お金払って使っている）

* [IntelliJ IDEA](https://www.jetbrains.com/idea/)
    * IDE
    * Ultimate 買ってる
    * PHP, Ruby(capistrano), Yaml(Ansible), markdown なんかを書く
    * もちろんhtmlやcssやjsも書く
* [xmind](https://jp.xmind.net/)
    * mind map ソフト
    * Pro 買ってる
    * 考え事をする時はまず思いつくまま一気に単語を挙げてから整理するのを繰り返す
* [CLIP Studio](http://www.clip-studio.com/clip_site/)
    * まだまだ練習中の域を出ないけど、絵を書くのに。。。
    * ペンタブをマウスがわりに使うエンジニアの知り合いがいたので真似てみたんだけど、やぱマウスのほうが手っ取り早いやｗ
* [弥生会計](https://www.yayoi-kk.co.jp/)
    * 日商簿記２級（20年以上前にとったんで。。。今年３級を受験しなおしてぎりぎり合格したｗ）
    * フリーランスなので青色確定申告してる
    * 万が一の時はなんちゃって会計の仕事でも食っていける程度には使える
    * 慣れると他の会計ソフトは使いにくくて。。。

# 無料（もしくはライセンス登録していない）

* [tera term](https://ja.osdn.net/projects/ttssh2/)
    * ターミナルは Tera term 派
    * tera menu が便利なので
    * ちなみに tmux と vi 派
* [vagrant](https://www.vagrantup.com/) と [VirtualBox](https://www.virtualbox.org/)
    * VM起動に使ってる（VMはVirtualBoxで）
    * Docker はもうちょっと後でいいやと思っているのでやってない
* [SourceTree](https://ja.atlassian.com/software/sourcetree)
    * git（とhgの） client
    * Windows と Mac 上ではGUIツールのほうが楽なので
    * VM上では普通にコマンドライン使うよ
* [explzh](http://www.ponsoftware.com/)
    * Windows 用の圧縮解凍ソフト
* [Unity](http://japan.unity3d.com/)
    * エンジニアのたしなみ程度に
    * カメラをC#で動かして遊んでたら変なほうにはまりそうになったので最近やってない
    * C#書くのに困らない程度に使うだけ
* [Blender](https://www.blender.org/)
    * OSSの3Dモデリングソフト
    * エンジニアのたしなみ程度に
    * pythonで自動化処理書き始めて違う方向にはまりそうになったので最近やってないｗ

# サービス

* [DropBox](https://www.dropbox.com/ja/)
    * ファイル共有サービス
    * 個人的に作業日報をテキストで書いて保存している（履歴が残る）
    * xmind を Pro にする前はマップファイルもおいていたけど、クラウドが使えるようになったので
    * [ここ](https://db.tt/ijUxIXd8)から登録するとお互いちょっとうれしいｗ
* [Trello](https://trello.com/)
    * タスク管理サービス
    * 個人的に仕事用のTodoとか読書記録とかxmindから整理しなおしたリストの保存に使用している
    * 招待リンクもあるんだけど本名フルネームで登録したアカウントだから掲載しないｗ
* [マネックス証券](https://www.monex.co.jp/)
    * 証券会社
    * フリーランスとかお財布が複数ないと困るし
    * NISAも使わないともったいないし
    * SBIとか他にも口座はあるけど結局使ってない
    * 友達紹介キャンペーンもあるけど、メールアドレスが必要なので。。。

# あとがき

* 思ったほどなかった
* 使うってゆうか、昔使ってたとか、PCに入ってるとかなら他にもあるけど紹介したいほど使ってなかったｗ
* 系列の似てるエンジニアさんとお知り合いになりたいなーとか思ってたり思ってなかったり（人見知り）
ActiveJobでとりあえず全部の例外を補足する

[Active Job の基礎 | Rails ガイド](http://railsguides.jp/active_job_basics.html#%E4%BE%8B%E5%A4%96)だと

```Ruby
class GuestsCleanupJob < ActiveJob::Base
  queue_as :default

  rescue_from(ActiveRecord::RecordNotFound) do |exception|
    # ここに例外処理を書く
  end

  def perform
    # 後で実行する処理を書く
  end
end
```

となっているが、`ActiveRecord::RecordNotFound`を`StandardError`にすれば良い。
Mac OSXにApache Mavenをインストール(Homebrew)

## インストール可能なMavenのバージョンを確認
```
$ brew search maven
```

以下の結果が表示される。

```
maven maven-shell
homebrew/completions/maven-completion  homebrew/versions/maven31  homebrew/versions/maven32  Caskroom/cask/mavensmate
```

## インストール

今回はmaven32を選択。

```
$ brew install homebrew/versions/maven32
```
monit情報オレオレまとめ

# [概要]
## monitとは
総合監視デーモンとしてファイルシステムからHTTPレスポンス内容・プロセス監視などの機能を持っており、GPLライセンスでLinux/BSD/Solaris上で動作可能となっている。
アラート送信の機能も持っておりちょっとしたシステムの監視にも使うことが可能。
CentOSならDAGリポジトリからyum installもでき、configも簡潔となっており導入の敷居も低い。

## 特徴
 - インストールが簡単ですぐに始められる
 - オープンソース
 - WEB UIもちゃんとある

## 依存関係
 -
 
## 公式リンク
* 公式サイト
 - https://mmonit.com/monit/
* 公式Wiki	
 - https://mmonit.com/wiki/
* 公式ドキュメント
 - https://mmonit.com/monit/documentation/monit.html

# [知っておくべきこと]
 - M/Monit と言われるMonitを一元管理するサービスも有る(有料)
	 - https://mmonit.com/shop/

# [目次]
* [CentOS7にmonitを導入してみる](http://qiita.com/ghfdjk/items/2c132921c9ff5617dc8e)
* [monitコマンドのチートシート](http://qiita.com/ghfdjk/items/1cd704cdbf08a3707882)
* monitによる監視方法
 - Monitのcrond監視
 - Monitのsshd監視
* 監視のTips
  - Monitのpidfileが存在しないプロセス監視
  - Monitの監視で起動ユーザを指定する場合
input type="number" のマウスホイール操作を無効化する

## 概要

Firefox や Google Chrome では、input type="number" フィールドの値をホイール操作で変更する事ができます。
入力ミスを防ぐ等の理由から、無効化したいケースがあると思います。
その場合の対処法メモです。

## マウスホイールによる値の変更を無効化する例 (jQuery)

```JavaScript
$(function(){
  $('form').on('focus', 'input[type=number]', function (e) {
    $(this).on('wheel.disableScroll', function (e) {
      e.preventDefault()
    })
  })
  $('form').on('blur', 'input[type=number]', function (e) {
    $(this).off('wheel.disableScroll')
  })
});
```

wheel イベント詳細はこちら
https://developer.mozilla.org/en-US/docs/Web/Events/wheel
IE9 以降のクロスブラウザに対応可。


## スピンボタンも非表示にする例

```CSS
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

input[type=number] {
  -moz-appearance: textfield;
}
```
PowerShellで 指定した年月に含まれる日数を取得してみる

初学者なので、基礎的なところをいろいろと試しています。

.NetFramework の、
System.DateTime クラスにある DaysInMonth メソッドを呼んでみます。
<pre>
Write-Host "2016年"
 for ($month = 1; $month -le 12; $month++)
    {
    $nichi = [DateTime]::DaysInMonth(2016, $month)
    Write-Host $month "月は" $nichi "日あります"
    }
</pre>
実行結果は、
<pre>
2016年
1 月は 31 日あります
2 月は 29 日あります
3 月は 31 日あります
4 月は 30 日あります
5 月は 31 日あります
6 月は 30 日あります
7 月は 31 日あります
8 月は 31 日あります
9 月は 30 日あります
10 月は 31 日あります
11 月は 30 日あります
12 月は 31 日あります
</pre>
gitでコミットをまとめる

いろんなのが上がっているが写経する。

[[Git] 複数のコミットを一つにまとめるメモ - Qiita ](http://qiita.com/sue738/items/c79d5b9afde517456a74)

[rebase -i でコミットをまとめる - Qiita](http://qiita.com/takke/items/3400b55becfd72769214)

[Gitの複数コミットをrebaseとsquashでまとめる方法 | iwb.jp](https://iwb.jp/git-commit-rebase-squash/)

[Gitで複数のcommitを一つにまとめる方法 - yachibit.log](http://yachibit.hatenablog.jp/entry/2013/02/27/084228)

# やってみる

まず適当にコミットを作ります。

```
$ git init
$ touch sample.txt
$ for i in a b c d e ; do echo $i >> sample.txt ; git add sample.txt; git commit -m "add $i"; done

$ git log --oneline
0cc983e add e
974341b add d
54c160b add c
3eed8a1 add b
d3b1aaa add a
```

c, d のコミットをbにまとめたいとします。
rebase -iにaのコミットを指定するとそこまでの履歴が出てきます。
git log とは逆順になっているので一つ上にまとめるイメージでc,dにsquashを指定します。

```
$ git rebase -i d3b1aaa
pick 3eed8a1 add b
s 54c160b add c
s 974341b add d
pick 0cc983e add e

# Rebase d3b1aaa..0cc983e onto d3b1aaa
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
```

コミットログにどう残すか聞いてきています。

```
# This is a combination of 3 commits.
# The first commit's message is:
add b

# This is the 2nd commit message:

add c

# This is the 3rd commit message:

add d

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# HEAD detached from 3eed8a1
# You are currently editing a commit while rebasing branch 'master' on 'd3b1aaa'.
#
# Changes to be committed:
#   (use "git reset HEAD^1 <file>..." to unstage)
#
# modified:   sample.txt
```

bにc,dをまとめた記載をし、それ以外は
いらないので削除します。

```
# This is a combination of 3 commits.
# The first commit's message is:
add b c d

# This is the 2nd commit message:

# This is the 3rd commit message:
```

まとまりました。

```
[ymko@www1352ue rebase]$ git log --oneline
3eb4a28 add e
f3694ac add b c d
d3b1aaa add a
```

# 注意点

[ほんとうは怖いリベース](https://git-scm.com/book/ja/v1/Git-%E3%81%AE%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E6%A9%9F%E8%83%BD-%E3%83%AA%E3%83%99%E3%83%BC%E3%82%B9#ほんとうは怖いリベース)　の通り、禁止事項が一つあります。

>
公開リポジトリにプッシュしたコミットをリベースしてはいけない

`git push -f`でプッシュする方法もありますが、基本的にpushしたコミットを書き換えてはいけません。
新人SEだけど演習プロジェクト立ち上げたよ！

#はじめに

転職して2日目。演習課題として売上管理システム作成のプロジェクトを丸投げされたので、基本的なプロジェクトの進み方を勉強しました。本記事では備忘録としてプロジェクトの流れを書き記しておきます。


#プロジェクトのつくりかた

学生時代から見切り発車＋自己満足なプログラムしか組んでこなかったので、実際の業務も「なんか書類作りは適当にやって、組みながらシステム考えていくかなー」程度にしか考えていませんでした。甘かった。**プロジェクトは計画が8割**ということを思い知りました。

私が今回作成したプロジェクトは、以下の流れで動いています。

1. 要件定義　・・・なにを作るか決める
2. 設計　　　・・・どうやって作るか決める
3. 実装　　　・・・実物を作り始める
4. テスト　　・・・正しく動くかチェックする

実際には納品等があるらしいですが今回は演習課題なので割愛します。

#それぞれの仕事
##1. 要件定義

システムを作る前提条件として「何をするシステムなのか」を考えなければなりません。それを規定するのがこの要件定義です。

要件定義で最も重要なのは、**できなければならないこと、できなくてよいことを明確化する**ことです。たんに「売上管理システム」と言われると、「明細書を作るまでがシステム？」「いやいや、確定申告まで自分でできるのがシステムだ」と、どれぐらいできなければならないか不明瞭になる。このまま実装を始めてしまうと、開発者が何万人いても足りない膨大なシステムの話になってしまう。

そこで、「伝票の詳細は出せるようにしてね」「でも在庫の自動補充とかはしなくていいよ」というように、**どこまでシステムで実現させるか**を入念に練る。これが要件定義。要件定義があるおかげで、何を作って何を作らないかを明確化することができる。

実際に見よう見まねで作った要件定義書を貼りたいけど著作権云々で保留

##2. 設計

何作るか決めたら、どのように作るかを決める。また書類作成だけど仕方ないね。
まずは**WBS**と呼ばれる進捗管理の様式を作る。個人的な解釈をすると**とりあえずやらなきゃいけないことを書けるだけ書いておこうシステム**と考えています。

というわけで、やらなきゃいけないことを片っ端から書いていきます。実装はもちろん、「データの表し方を考える」「この辺で大丈夫かお客さんに見てもらう」「そもそもこの書類どもを作っている期間」……などなど。書けるものを書いて、分類して統合して、作業の順番に並べる。これがWBS。

それができたらいよいよシステム…………の設計書を作ります。

###(1) 外部設計書
外側から見た設計書…………ということで、**システム全体をどのように構成するか？**を記述する設計書。入力がこれで出力がこれで、必要な機能がこれで…………などなどを記入していきます。これがあれば、**システムを実現するのにどんな機能が必要か？**が理解できるわけです。

###(2) 内部設計書
内側を考える設計書……………ということで、**機能をどのようにして作っていくか？**を記述する設計書。外部設計で出てきたシステムをひとつずつ切り出して、入出力データがこれで見た目がこれで、そもそもシステムの考え方はこれで…………などなどをを記入していきます。これがあれば、**どのような機能を作ればシステムができるか？**が理解できるわけです。

##3.実装
お待たせしました、いよいよコーディング。得られた設計書をもとにつらつらとプログラムを組んでいきましょう。
これを始める前に必要なのが**コーディング規約**。大勢で組むときに、変数の使い方やタブ幅が違うと発狂したくなります。私はなります。ここが曖昧だと後々に深い確執が出来るに決まってます。
プロジェクトが始まるたび社内に敵を作るわけにもいかないので、「こういうエラー処理をしましょう」「こういう微妙な場合はこうやって判断しましょう」とお約束します。コーディング規約が調停者になってくれます。

ここまで書いて、実装はあんまり書くことがないことに気付いた。やっぱり実装2割。

##4. テスト
作ったプログラムは各自デバッグしてるはずですが、いざデータを食べた瞬間に落ちるなんてことがたまによくあります。商品として送り出したあとにそんなことがあると洒落にならないので、開発中に**美味しいものとマズイものを食べさせて、プログラムをいぢめる工程**が必要になります。これがテストです。

テストに先立って**テスト方針書**と、各テストでの**テスト設計書**を作成します。テスト方針書は「こういうテストをします、これこれしたらクリアです」という方針を定義。テスト設計書は「あんなデータでいぢめます、こんな操作でいぢめます」という実際のデータやクリア条件を書いておきます。これに則ってテスト開始。

最初は機能の中身だけを辿る**単体テスト**。詳細は気が向いたら書きますが、コードとにらめっこしながら変数の動きまで考えます。

次に**結合テスト**。各々が持ち寄った単体テスト済みの機能をくっつけてバグを探します。ここで落ちるとすごく恥ずかしいから頑張って備えてます。

最後にシステム全体としてプログラムを使う**システムテスト**。お客様になりきって、正常に動かしたり無理やり動かしたりして変な挙動にならないかチェックしていきます。

#新人よ、これがプロジェクトだ
こうして見ると炎上する要因というのは至る所にあると感じます。

**「要件定義から漏れてた機能を後出しされた」**
**「設計ミスで入力データが次々消えていく」**
**「コーディング規約を守らない奴のコードが死ぬほど読みにくい」**
**「テスト失敗」**
**「テスト失敗」**
**「テスト大失敗」**
**「そもそも設計おかしい」**
**「そもそも要件に無いことを指示されてる」**

こんな事が容易に想像できてしまうし、容易に想像できる先輩と上司が数名いる。こわい。
しかし、これらの要因は**よく吟味したドキュメント作成で回避できる**ものも多い。初心忘れるべからず、常によいドキュメント作りをしてプロジェクトを進めることを意識したい。

#おわりに
最後までご覧頂きありがとうございました。ご指摘等ございましたらコメントにてご教授いただきますようお願いいたします。
GAE/Pythonのローカルでのユニットテストを通すためのライブラリパス設定

# 概要
開発用PCの片方は brew-cask で google-cloud-sdk をインストールしてしまった Mac OS X、もう片方は apt-get で google-cloud-sdk-app-engine-python をインストールした Bash on Ubuntu on Windows というカオスな環境で、ローカルで走らせるユニットテスト用の PYTHONPATH をなんとかしたい。

# 環境
Python 2.7

# やり方
gcloud info --format=json で json で設定情報が帰ってくるので、sdk_root をそこからゲットする。

```python
import os, sys, subprocess, json
gcloud_info = json.loads(subprocess.check_output(['gcloud', 'info', '--format=json']))
sdk_path = os.path.join(gcloud_info["installation"]["sdk_root"], 'platform', 'google_appengine')
sys.path.append(sdk_path)
sys.path.append(os.path.join(sdk_path, 'lib', 'yaml', 'lib'))
```