OmniAICreator/Qiita-1.07M huggingface dataset:
ローカル開発環境の構築

#ドットインストールのローカル開発環境構築まとめ

ドットインストールのローカル開発環境構築をまとめます．

#vagrant等
今後複数の仮想マシンを作ることを想定して，それらをまとめるフォルダ(MyVagrant)を作成．

```bash
cd DIRECTORY
mkdir MyVagrant
```
仮想マシンを作るフォルダの作成

```bash
cd MyVagrant
mkdir MyCentOS
```
仮想マシン設定用のVagrantfileの作成

```bash
cd MyCentOS
vagrant init bento/centos-6.8
```
Vagrantfileを編集して仮想マシンのIPアドレスを192.168.33.10にする

```bash
sed -i '' -e 's/# config.vm.network "private_network", ip: "192.168.33.10"/config.vm.network "private_network", ip: "192.168.33.10"/' Vagrantfile
```
仮想マシンを起動

```bash
vagrant up
```

仮想環境に接続

```bash
vagrant ssh
```

OSを最新状態にアップデート（時間かかります）

```bash
sudo yum -y update
```

スクリプトを入手するためのgitをインストール

```bash
sudo yum -y install git
```

gitを使ってアプリケーション設定用のスクリプトをダウンロード

```bash
git clone https://github.com/dotinstallres/centos6.git
```
centos6フォルダができるのでそちらに移動し，スクリプト実行

```bash
cd centos6
./run.sh
```

もろもろの設定を反映

```bash
exec $SHELL -l
```



#Cyberduck
次はCyberduckの設定をしていきます．

- 新規接続を選択し，SFTPプロトコルを選択
- サーバー名を設定(今回は'192.168.33.10')
- ユーザ名は vagrant
- パスワードも vagrant

#おわり
以上で簡単なローカル開発環境は構築できると思います．
`<class:xxxxxxx>': uninitialized constant xxxxxxx::ooooooo(NameError)を解決した話

実践Ruby on Rails4を勉強していて出てきたエラーを解決した話。

#起きたこと
controllers/concernsの中に、

```ruby:errors_handler.rb
module ErrorHandlers
  extend ActiveSupport::Concern

  included do
    rescue_from Exception, with: :rescue500
    rescue_from ApplicationController::Forbidden, with: :rescue403
    rescue_from ApplicationController::IpAddressRejected, with: :rescue403
    rescue_from ActionController::RoutingError, with: :rescue404
    rescue_from ActiveRecord::RecordNotFound, with: :rescue404
  end

  private
  def rescue403(e)
    @exception = e
    render 'errors/fobidden', status: 403
  end

  def rescue500(e)
    @exception = e
    render 'errors/internal_server_error', status: 500
  end

  def rescue404(e)
    @exception = e
    render 'errors/not_found', status: 404
  end
end
```
を作って、application_controller.rbを

```ruby:application_controller.rb
class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  layout :set_layout

  class Forbidden < ActionController::ActionControllerError; end
  class IpAddressRejected < ActionController::ActionControllerError; end

  include ErrorHandlers if Rails.env.production?

  private
  def set_layout
    if params[:controller].match(%r{\A(staff|admin|customer)/})
      Regexp.last_match[1]
    else
      'customer'
    end
  end
end
```
このようにしてErrorHandlersをincludeしたかったのですが、

>/vagrant/app/controllers/application_controller.rb:11:in `<class:ApplicationController>': uninitialized constant ApplicationController::ErrorHandlers (NameError)

と出てきてしまいました。

[Rubyでのハマりポイント](https://qiita.com/ikedahidenori/items/66c2ea4d2c5205d809f0)
を見ても、モデルの命名の話じゃない。他の記事を参照してもどれもピンときませんでした。

#結果
concernsの下のファイルの名前が、
>errors_handler.rb

だったのがいけなかったという話でした。
>error_handlers.rb

にしなければいけないという、単純に自分のミスです。

includeするときにファイルの名称なんて気にする必要なく、module ErrorHandlersって書いていれば読み込んでくれるものかと思っていましたが、そんなことはないんですね（初心者並感)。

先にここだけアウトプットしておくので、また調べてから更新します。
Install Fabric for Python 3

**Note**: If you don't have pip3 on your Mac, see [Install Python 3 on Mac](https://qiita.com/chikaram/items/a15bb103464988e20d31).


# 1. Install Fabric for Python 3

```bash
pip3 install fabric3
```

Check if it's successfully installed.

```bash
fab -V
```

That's all.
BigQueryを便利にするプラグイン「BigQuery Mate」

## BigQueryMateとは
chromeの拡張プラグインです。
ここからダウンロードしてください。
https://chrome.google.com/webstore/detail/bigquery-mate/nepgdloeceldecnoaaegljlichnfognh

以下、個人的にBigQuery Mateの気に入っているところをピックアップして紹介します。

### 1, 予約語を勝手に大文字変換してくれる
[![Screenshot from Gyazo](https://gyazo.com/91d0f99d2c73f8394ceb520642cc5187/raw)](https://gyazo.com/91d0f99d2c73f8394ceb520642cc5187)


### 2, クエリを投げる前に金額がわかる
![Screenshot from Gyazo](https://gyazo.com/629d3ab19e72876c2e1d5ee002f6ae81.png=x50)

高いですね。。。

### 3,StandardSQLへの切り替えが簡単
[![Screenshot from Gyazo](https://gyazo.com/6f8d8d662dbfb982abd9d16d42239cce/raw)](https://gyazo.com/6f8d8d662dbfb982abd9d16d42239cce)

「command + alt + l」で切り替えが可能です。（macの場合）

### 4, プレースホルダーがかける
[![Screenshot from Gyazo](https://gyazo.com/2537d8ff52ea2dc27e13c68c4f5764c5/raw)](https://gyazo.com/2537d8ff52ea2dc27e13c68c4f5764c5)

「@hoge」でプレースホルダーがかけます。
あとはBigQuery Mateのタブから対応するプレースホルダーを書き換え、ボタンを押せば値が反映されます。
うちの場合はエンジニアが分析したSQLを可変にしたい箇所をプレースホルダーに変えて、
「Project Queries」　に保存しています。
あとはパラメータを設定するだけでコンサルやビジネスが必要な時に好きなデータが出せます。
よく_PARTITIONTIMEをプレースホルダーにすることが多いですね。

### 5, 結果の表示行を増やせる
[![Screenshot from Gyazo](https://gyazo.com/93248a433ada2e6d61dceb1e27799775/raw)](https://gyazo.com/93248a433ada2e6d61dceb1e27799775)

これ、地味に便利

### 6, クエリの結果の簡単な描画(pivot)ができる
![Screenshot from Gyazo](https://gyazo.com/e6bfcec4ea7de9bbd622693860643b1f.gif)

グラフ化することもできます。

[![Screenshot from Gyazo](https://gyazo.com/035e42541140a20256cfda558c01c1e5/raw)](https://gyazo.com/035e42541140a20256cfda558c01c1e5)

ちょっとお見せできるデータがなく、しょぼいですが。。。
棒グラフや折れ線グラフ、ヒートマップなんかができますね。
Google Data StudioやRedashなんかの無料のBIを使わなくても簡単に
描画できるのはいいですね。
ただ、描画したものを共有する方法はないので手元で見て遊ぶだけになりそうです。。。



### 終わりに
他にも機能はありますが個人的によく使うものを紹介しました。
めちゃくちゃ便利になる訳ではありませんが、あると少し幸せになれるので
BigQueryでガシガシクエリを書く方にはぜひおすすめです！
《JavaScript》画像から取得したデータでCanvasにモザイクを描く方法。


`canvas` 要素に記述した独自データ属性の `data-src` 属性を参照し、その画像データからモザイクを描くスクリプトです。

モザイクのサイズを変えられるような関数になっています。


* [demo](https://jsfiddle.net/yutousui/7ucgf7at/)


## Html

```html

<canvas id="canvas" data-src="test.jpg" width="800" height="600"></canvas>

```





## JavaScript

```js

/**
 * canvasのdata-src属性の画像のピクセルデータからモザイクを描画する
 * @param mosaicSize {number}
 */
const mosaicImage = (target, mosaicSize = 20) => {

  let canvas = document.getElementById(target),
      _canvas = document.createElement('canvas');

  if (!canvas || !canvas.getContext) {

    return false;

  }

  /**
   * 画像情報からモザイクを描画する
   */
  const createMosaic = (context, width, height, size, data) => {

    for (let y = 0; y < height; y += size) {

      for (let x = 0; x < width; x += size) {

        /**
         * r,g,b,a の順で格納されている値を取り出す
         */
        let cR = data.data[(y * width + x) * 4],
            cG = data.data[(y * width + x) * 4 + 1],
            cB = data.data[(y * width + x) * 4 + 2];

        context.fillStyle = `rgb(${cR},${cG},${cB})`;
        context.fillRect(x, y, x + size, y + size);

      }

    }

  };

  /**
   * カンバスに描画
   */
  const draw = (_context, imageData, context) => {

    createMosaic(_context, _canvas.width, _canvas.height, mosaicSize, imageData);
    context.drawImage(_canvas, 0, 0);

  };


  const init = () => {

    let context = canvas.getContext('2d');

    /**
     * 画像をセット
     */
    let img = new Image();
    img.src = canvas.getAttribute('data-src');

    /**
     * 画像のロードを待って
     */
    img.onload = () => {

      let _context = _canvas.getContext('2d'),
          imageData;

      /**
       * 画像とカンバスのサイズを合わせる
       */
      _canvas.width = img.width;
      _canvas.height = img.height;

      _context.drawImage(img, 0, 0);

      /**
       * canvasのピクセルデータのオブジェクト
       * 左から右に、 r, g, b, a の順で色情報が格納されている
       */
      imageData = _context.getImageData(0, 0, _canvas.width, _canvas.height);

      draw(_context, imageData, context);

    };

  };
  init();

};

/**
 * 対象のカンバス, モザイクのサイズ
 */
mosaicImage('canvas', 20);

```




おわります。
Install AWS CLI

**Note**: If you don't have pip3 on your Mac, see [Install Python 3 on Mac](https://qiita.com/chikaram/items/a15bb103464988e20d31).


# 1. Install AWS CLI

```bash
pip3 install awscli --upgrade --user
```

If you are curious about the `--upgrade` and `--user` options, see [the official explanation](http://docs.aws.amazon.com/cli/latest/userguide/installing.html).

Now you can use AWS CLI command.

```bash
aws --version
```


# 2. Configure your AWS CLI

Make an IAM user on AWS Management Console and set its credentials with the following command. (Usually the config files are generated in `~/.aws` directory.)

```bash
aws configure
```

Now you can see the list of your S3 buckets (if you have some).

```bash
aws s3 ls
```
PHPの関数の引数の整合性

(この記事は[エキサイトAdvent Calendar 2017](https://qiita.com/advent-calendar/2017/excite)の最初の記事です。)

2015年のPHPカンファレンスでPHPの作者、ラスマス・ラードフ氏にインタビューを行いました。この記事はそのインタビュー内容が掲載された記事「[PHPの生みの親，ラスマス・ラードフ氏インタビュー」](http://gihyo.jp/news/report/2015/12/1401?page=4)から関数の引数の整合性に関して語った部分を引用したものです。

「関数の引数の整合性」はPHPの言語設計に対する批判としてよく挙げられるものですが、PHPの作者がどのように考えてるのかを知るために該当部分を抜粋しました。

--

# PHPはテクノロジーへのショートカットにすぎない

... PHPは一人で保守するには大きくなりすぎました。もし私がコントロールを維持するために，パッチはすべて自分を通さないと出せないようにしていたら，とうていやっていけなかったでしょう。そもそも私は面倒くさがり屋ですし，PHPはサポートする範囲が広すぎます。私は20種類ものデータベースをそれぞれ熟知しているわけではありませんから。たとえば，Oracleのエンジニアがパッチをサブミットして，Oracleの何とかかんとかのために，これを変更したいと言ったとします。それをどうすべきか私には判断できません。適用したほうがいいかもしれないが，そうでないかもしれない。Oracleのエンジニアは修正する必要があると言っている。PHPの多くの部分は，何人もが日夜取り組んで作りあげたものです。

私が一人で作るよりずっとよくできているコンポーネントにあれこれ手出しをしてボトルネックを作るのは，合理的だとは思いません。PHPとは実のところ，個別に開発されたパーツの寄せ集めなのです。整合性がないように見えるのは，それぞれ独立したチームが開発しているからで，Oracleに関することはOracleエンジニアたちがやっているのです。MySQL拡張モジュールはMySQLの人々が作りました。**必ずしも互いに話し合う必要はないのです。**たとえば，PHPにはPDOがありますが，これはあまり優れた抽象化レイヤではありません。多少の抽象化は試みましたが，本気でOracleやMySQLを使いたい人はMySQLiやOCIなどのネイティブインターフェイスを使うでしょう。どちらもそのデータベースを熟知して毎日使っている人々が書いたものです。だから整合性はなくても，どのモジュールもそれぞれ非常によくできているのです。

モジュール間での共通性には欠けるかもしれませんが，OCI拡張モジュールもMySQL拡張モジュールも，下で動いているC APIにほぼ1対1で対応している点において整合性があるといえます。MySQLドキュメントのC APIに関する部分を見てみれば，PHP開発者にとってはなじみ深く感じられるはずです。どの低レベル関数もPHP側の何かと対応しているからです。だからPHPは垂直方向に見れば整合性はあるのですが，多くの人から始終「PHPはまったく整合性がない」と言われます。**整合性は確かにあるのです。ただ，人々が思っているような水平方向にはないというだけです。垂直方向に見れば，完璧な整合性があります。**

たとえば文字列関数。UNIXコマンドラインでmanしてstrchrの項を見てみると，UNIXとCとではstrchr関数の引数の順序も書式もまったく同一なことが分かります。どちらも同じライブラリをベースにしているのですね。水平方向に見れば両者に整合性はありませんが――おそらくあのライブラリ群を作った人たちは互いにあまり話し合わなかったのでしょう。

**私たちがPHPの整合性のなさを直さないと言ってよく非難する人がいますが，PHPはそもそもそれが問題になるようなものではないのです。**PHPは結局，ライブラリやその他基盤となっているテクノロジーへのショートカットにすぎません。それなのに，どうして誰もがPHPレベルでの整合性を求めるのか，私には分かりません。整合性をとるのはフレームワークの役割です。フレームワークは問題を解決するための全体的なアプローチを定める場所ですから。PHPはその下のレベルにあって，ただ低レベルにあるライブラリとか関数とかへのアクセスを提供するだけの存在です。こう言っても多くの人は同意してくれないんですが，PHPはそういうふうに開発されたものですから。
RailsでActiveAdminを使ってみた

RailsでActiveAdminを使ってみたので、忘れないようにメモ
こちらのサイトを参考に
http://activeadmin.info

#環境
- Rails:4.2.6
- Ruby:ruby 2.3.0
- MacOS:10.11.5 ElCapitan

#導入手順
Active Adminをインストールする
GemFileに以下を追加

````GemFile
gem 'activeadmin', '~> 1.0.0.pre1'
gem 'activeadmin-translate'
gem 'devise'
gem 'devise-i18n'
````

以下のコマンドを実行する

````
bundle install
rails generate active_admin:install 
````
以下のような画面になればOK
![スクリーンショット 2016-07-18 10.54.57.png](https://qiita-image-store.s3.amazonaws.com/0/1553/aad7836d-628a-443f-fb22-9199523d2f09.png)
- マイグレートする
rake db:migrate
- デフォルトのユーザーを作成する
rake db:seed
- 以下のコマンドでサーバーを起動
rails server

```
http://localhost:3000/admin
```
にアクセスして、以下のような画面が表示されればOK
![スクリーンショット 2016-07-18 15.12.55.png](https://qiita-image-store.s3.amazonaws.com/0/1553/ad897bb4-28f1-645b-2ab8-af5e1963dd06.png)

デフォルトでのUserIDとPasswordは以下のとおり
- UserID: admin@example.com
- Password: password

![スクリーンショット 2016-07-18 16.21.37.png](https://qiita-image-store.s3.amazonaws.com/0/1553/1164ba5a-6e9c-8a32-c28d-ec9277f14936.png)

新しくModelを作る時は、以下のコマンドを実行
まずは、Modelを作成

```
rails generate model Model名
rake db:migrate
```
その後、active_adminのModel作成

```
rails generate  active_admin:resource　Model名
```

モデルを作らず、ページだけを作りたい場合は

```
rails generate active_admin:page Page名
```
MacにMySQLを入れてみたので備忘録メモ

MacにMySQLを入れてみたので、備忘録的なメモ

* brew updateを行う

 ```
$brew update
$brew install mysql
```

* mysqlの開始

 ```
$mysql.server start
```

* mysqlにログイン

```
mysql -u root -p
```

* テーブル作成

```
create database hoge;
```

* 番外編　（起動しない時）

```
sudo /usr/local/opt/mysql/bin/mysqld_safe &
```
【UE4】AISense_Sightの視線チェックを改良する

#はじめに
この記事は以下の記事に自分なりの補足を加えたものになります。

>AI Sight Perception to Custom Points WRITTEN BY Carlos Pardo
https://blog.gamedev.tv/ai-sight-perception-to-custom-points/

まずはリンク先の記事を読んでいただいてこちらを読むと理解しやすいと思います。


#AISense_Sightの問題点
AISense_SightではAIが視認できているか否か（視線チェック）を**LineTrace**を用いてチェックしています。
しかし、この方法では少し問題が有り以下のような状況ではAIがプレイヤーを視認することが出来ません。
![2017-11-17_22h49_51.png](https://qiita-image-store.s3.amazonaws.com/0/104467/48c67053-2c15-0365-bc52-e5b47b74d74f.png)
両者はそれぞれ胸から上までさらけ出しているにも関わらずAIが視認出来ない理由は**LineTraceの終了位置**が**RootComponentの位置**となってしまっているからです。
![2017-11-17_22h50_59.png](https://qiita-image-store.s3.amazonaws.com/0/104467/b4cf3804-8592-5eaa-210b-73f5557ae893.png)

最初の方に張った引用元記事ではこの問題を解決するために*AISightTargetInterface*を継承し*CanBeSeenFrom関数*をオーバーライドしています。

#CanBeSeenFromを更に改良してみる
引用元記事ではオーバーライドしたCanBeSeenFrom関数で

```cpp
auto sockets = GetMesh()->GetAllSocketNames();
```

とすることでスケルタルメッシュが持つソケットを取得する様に書いていますがGetAllSocketNames関数はソケットに加え**ボーンまで取得**されてしまいます。

>C++ GetAllSocketNames returns bones along with sockets
https://answers.unrealengine.com/questions/726464/c-getallsocketnames-returns-some-bones-and-sockets.html

GetAllSocketNamesではIKボーンまで取得してしまいますので例えプレイヤーがしゃがんでいたとしても赤丸のIKボーンが見えていればAIには「見つけた」と判定されます。
![2017-11-21_16h54_03.png](https://qiita-image-store.s3.amazonaws.com/0/104467/3f0d3acb-2af0-6204-d526-a463289eb58a.png)
この問題を解決するために上記の引用リンクにあるように

>GetActiveSocketList()

を利用します。

修正場所は２箇所あります。

```cpp
	//TArray<FName> sockets = GetMesh()->GetAllSocketNames();

	TArray<USkeletalMeshSocket*> sockets = GetMesh()->SkeletalMesh->GetActiveSocketList();

	for (int i = 0; i < sockets.Num(); i++)
	{

		FVector socketLocation = GetMesh()->GetSocketLocation(sockets[i]->SocketName);

```

このようにGetAllSocketNames()をGetActiveSocketList()に置き換えます。
次にGetSocketLocation関数の引数部分を **sockets[i]->SocketName** に変更します。
 
GetActiveSocketList()ではUSkeletalMeshSocketを返しますから

```cpp
#include "Engine/SkeletalMeshSocket.h"
```

このヘッダをインクルードすることを忘れないでください。

##スケルタルメッシュにソケットを追加する
GetActiveSocketList関数を利用したことでゲーム中に使用するスケルタルメッシュにソケットを追加する必要があります。
自分は以下のように頭、腰、両肘、両手、両膝、両足首にソケットを追加しました。
![2017-11-21_17h26_15.png](https://qiita-image-store.s3.amazonaws.com/0/104467/3779d11d-b4af-3dc4-8b33-3a9e5c189c71.png)


#改良の結果
| 結果１ | 結果２ | 結果３ | 結果４ | 
|:-----------------:|:------------------:|:------------------:|:------------------:|
| ![2017-11-17_23h14_24.png](https://qiita-image-store.s3.amazonaws.com/0/104467/e2c32e30-a774-aa5c-fe20-f43305b19c91.png)|              ![2017-11-17_23h16_11.png](https://qiita-image-store.s3.amazonaws.com/0/104467/d6c16e8a-8db0-492d-130c-cae18a72e522.png)|        ![2017-11-17_23h16_54.png](https://qiita-image-store.s3.amazonaws.com/0/104467/880b2b38-ff63-7ed4-f8c6-86c1841b4d66.png)| ![2017-11-17_23h17_12.png](https://qiita-image-store.s3.amazonaws.com/0/104467/b08304c4-838b-6f57-f9c5-22ca62a4e490.png) |

良い感じの結果が出ていますね。結果３や４は少しやり過ぎな気がしますが...
しかしこの方法のいいところはソケットの位置や追加場所を変更することでAIの視線チェックの位置を操作出来る所でしょう。
結果４のような結果が「理不尽だなぁ」と思われたのなら両足首のソケットを削除してしまえばOKです。

#おわりに
引用元記事を書いてくださったCarlos Pardo氏には感謝です。色々と勉強になりました。
Install Python 3 on Mac

# 1. Install Python 3

I bet the current Python version on your Mac is 2.X.

```bash
python -V # "2.7.10" on my Mac (macOS Sierra)
```

If so, let's install Python 3.

```bash
brew install python3
```

In `brew install` log, I think you saw some instructions about setting PATH to your `~/.bash_profile`. I did that like this.

```bash

export PATH=~/Library/Python/3.6/bin:$PATH
```

Then you can use Python 3 with `python3`.
\* Note that you can still use Python 2 with `python`.

```bash
python -V # You can still use Python 2
python3 -V
```

# 2. Check if you can use pip3

pip3 is a package management tool for Python 3, like npm for Node.js, gem for Ruby, and is automatically installed when you install Python 3.

Run this.

```bash
pip3 -V
```
ActiveRecordでUNIONしない

そもそもUNIONが必要なDB設計をしないようにしましょう。
既存を触るなど必要に迫られてもUNIONを頑張るより大事な事があると思います。
ですので、私はstatementでお茶を濁しました。

キーも異なるテーブルのupdated_atをdistinctする必要があったので
※sample1,2にはrelation_idに複数レコードが存在してる想定です。

``` ruby
query = "SELECT distinct SB.updated_at \
         FROM \
         (SELECT updated_at FROM sample1 WHERE relation_id = ? \
         UNION \
         SELECT updated_at FROM sample2 WHERE relation_id = ?) SB \
         ORDER BY updated_at DESC"

buffer = []
statement = ActiveRecord::Base.connection.raw_connection.prepare(query)
statement.execute(1, 10).each {|result| buffer.push result}
statement.close
```
SQLを頑張らないDB設計を心がけたいですね。
MySQL：ログインできなかった時の対応


いつも通りにMySQLにログインしたらエラー。。
何も出来ない。。なぜ。。


```
root@1a0ddc30403d:/usr/local/home/python# mysql -Uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 59
Server version: 5.7.20-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
Ignoring query to other database
mysql> select * from mysql.user;
Ignoring query to other database
```

どうもログインの方法が違ったようでした。
```mysql -Uroot -p```
```mysql -root -p```

とかは駄目なようです。
これでOKでした。大文字でも駄目なんですね。


```mysql -uroot -p```


以下のサイトを参考にさせて頂きました。ありがとうございました。
http://sakaik.hateblo.jp/entry/20100126/p1
CSSで数字だけフォントを変えたい

```html
<p class="f">Give me 5000 trillion yen</p>
<p>Give me 5000 trillion yen</p>
```

```css
@font-face {
  font-family: number;
  src: local('Hiragino Mincho ProN');
  unicode-range: U+0030-0039;
}

.f {
  font-family: number;
}
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/17722/f6c39049-0d18-fb22-74ef-2221ba7b3370.png)

font-face を定義し、 unicode-range で数字の範囲だけ指定すれば OK。

[サンプル(CodePen)](https://codepen.io/anon/pen/KyoKQg)

なお Google Fonts を使う場合はもっとかんたんで、 
`https://fonts.googleapis.com/css?family=Anton&text=0123456789`
というように数字を指定して読み込めばOK。
Mac に homebrew で docker 入れたい 2017年末版

今日は2017年11月21日。
macOS に docker 開発環境を構築するには [Docker for Mac](https://www.docker.com/docker-mac#/overview) アプリをインストールすればいいのです。
Virtual Box も必要なくなり全体の構成も随分すっきりしましたね。もう記事にするほどのこともなくなってしまった。
ところが homebrew を積極的に使いたい方は、却って悩んでいるかも。
この数年いろんなインストール手順がQiitaに書かれてきたけど、今は何が正解なのか、と。
ならばここにまとめましょう。

一応環境を : macOS High Sierra 10.13.1

# homebrew 使いのための docker 環境構築手順 2017年末版

結論先に。

```bash
$ brew cask install docker
$ open /Applications/Docker.app
```

これで、Docker Community Edition がインストールされ、 `docker` `docker-machine` `docker-compose` コマンドが実行できるようになります。

```bash
$ docker --version
Docker version 17.09.0-ce, build afdb6d4

$ docker-machine version
docker-machine version 0.12.2, build 9371605

$ docker-compose version
docker-compose version 1.16.1, build 6d1ac21
docker-py version: 2.5.1
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2j  26 Sep 2016
```

動いた動いた。
bash-completion 使いたいなら追加で次のコマンドを実行しましょう。必要なファイルは Docker.app アプリに同梱されています。

bash-completion 入れていなければ、まず入れます。

```bash
$ brew install bash-completion
$ echo '  [ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion' >> ~/.bash_profile
```

その次にシンボリックリンクを作成すれば完成。

```bash
$ ln -s /Applications/Docker.app/Contents/Resources/etc/docker.bash-completion /usr/local/etc/bash_completion.d/docker
$ ln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.bash-completion /usr/local/etc/bash_completion.d/docker-machine
$ ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.bash-completion /usr/local/etc/bash_completion.d/docker-compose
```

では Docker をお楽しみください。
ここから先は https://docs.docker.com/docker-for-mac/ を参考に進むのが良いでしょう。日本語ドキュメントは無い？よね。


## 何が困りごとかというと

homebrew で検索した時に、選択肢がいろいろ出てくるのがよくない。

```bash
$ brew search docker
==> Searching local taps...
boot2docker                     docker-compose-completion       docker-machine-nfs
boot2docker-completion          docker-credential-helper        docker-machine-parallels
docker                          docker-gen                      docker-swarm
docker-clean                    docker-machine                  docker2aci
docker-cloud                    docker-machine-completion       docker@1.11
docker-completion               docker-machine-driver-vultr     docker@1.71
docker-compose                  docker-machine-driver-xhyve
==> Searching taps on GitHub...
caskroom/cask/docker            caskroom/cask/docker-toolbox    caskroom/versions/docker-edge
==> Searching blacklisted, migrated and deleted formulae...
```

最低限、どれとどれとどれを入れればいいんですかね？
正解は、 `caskroom/cask/docker` 一つ入れればいいのです。それ以外は勝手知ったる先人のためのものでしょう。

- homebrew を検索して見つかる `boot2docker` `docker` `docker-machine` `docker-compose` と homebrew cask の `docker-toolbox` は入れる必要なし。というか入れたら困ったことが起きるはず。試してませんが。
- homebrew の `docker-completion` `docker-machine-completion` `docker-compose-completion` は使用しない。というか入れたら困ったことが起きるはず。試してませんが、[フォーミュラ](https://github.com/Homebrew/homebrew-core/blob/master/Formula/docker-completion.rb) 読むと homebrew cask の docker 使ってないから駄目だろうね。
- `docker-clean` や `docker-cloud` ってなんだろね。

おわり。
Officeの図形オブジェクトをPNG/SVGに変換する

## はじめに
*diagシリーズで書けない図形とか過去にExcelやPowerPointで書いた図形を、SphinxやQiitaで使えるように変換する手順

## 手順
1. Office(Excel,Powerpoint)からPDFを作成
2. PDFをinkspaceで開く
3. ページサイズをオブジェクトサイズに合わせる -> [手順](http://nahcew.com/ref/inkscape/startup/inkscape-page-size/)
4. SVGで保管する
5. PNGでエクスポートする

## 利用方法
### SVGファイル
- Sphinx から、imageディレクティブで呼び出せる

```:ex
.. image:: image1.svg
```
- KnowledgeにPNGとともに添付する

### PNGファイル
- QiitaやKnowledgeの記事中にアップロードして表示する。
コンパイラーkoalaについてメモ

- 最新版（ver2.30）はディレクトリに日本語名があるとエラーがでる。ひとつ前のバージョンをDLすると吉。
- partial fileをインポートする場合、はじめの文字列に日本語が含まれてると同じくエラーがでる。これは最新版だけでなく下位バージョン（2.14）でも同じ。
Mac から Windows へ移行のためのアプリケーション比較

# はじめに

2022.12 見直し
利用中の MacBook Pro が 5 年、そろそろ新機種を検討しているが、Windows への移行を考慮するため、利用頻度が高い、アプリの代替品を検討する。
Mac 側のアプリを有償版から無償のものへの移行を検討中

# アプリケーション比較

| アプリ                   | Mac                | Windows       |評価| コメント |
| ------------------------ | ------------------ | ------------- |---|---|
| ランチャー               | Alfred             | PowerToys <br> ~~Launchy/Wox/Hain~~ |△ | Launchy :: 更新が止まっている <br> Wox :: あやしい <br> Hain :: CPU 使用率が高い <br> PowerToys にしたけど、focus が取れない時がある。これは仕様らしい。|
| twitter                  | Janetter           | Janetter      | ○ | |
|                          | TweetDeck          | TweetDeck     | ○||
|                          | Tweeten            | Tweeten       |ー|これから|
| パスワード管理           | ~~1password~~ <br> Bitwarden | ~~1password~~ <br> Bitwarden     | ○ | Yubikey 連携がこなれている Dashlane も検討中 |
| 日本語入力               | ~~ATOK~~ <br> Google日本語入力 | ~~ATOK~~ <br> Google日本語入力 | ○ | ATOK に戻すことを検討中 |
| ファイラー               | PathFinder -> 代替品なし| multi commander <br> Files/NyanFi/shellfiler | ○ | |
| バックアップ             | Carbon Copy Cloner | -             |×|困りどころ|
| アプリ削除               | AppCleaner         | -             |
| Evernoteクライアント     | Alternote          | -              |× |Evernote 課金やめるつもりだが代替品がない|
| feedlyクライアント       | ~~ReadKit~~ <br> inoreader on browser | -    |×| いくつか試したが良いものがない|
| 入力補助                 | ~~TextExpander~~ <br> Alfred Powerpack | PhraseExpress |△||
| Window整列               | ~~ShiftIt/Magnet~~ <br> Rectangle | PowerToys <br> ~~Win Fit/Sizer~~      | △ | PowerToys を評価中|
| アプリケーション切り替え | ~~HyperSwitch~~ <br> AltTab | -             |○ |デフォルト|
| キーボードレイアウト変更 | Karabiner-element | AutoHotkey    |△ | |
| クリップボード補助       | Clipy ~~ClipMenu~~  | Clibor        |○| |
| ターミナル               | iTerm 2             | Windows Terminal <br> ~~conemu64~~ |△ |
|                          |                    | MobaXterm     |△ |
| スクリーンショット | OS 標準 <br> Shottr | Snipping Tool <br> snipaste | | |
| イメージサイズ変換 | Preview  | Ralpha Image Resizer |||

# 脱線

- ~~Mac から Windows への移行を検討しているが、WSL はもう少し成熟が必要だと感じる。~~ 
  WSL2 かなり良い
- ~~そうすると MSYS2 か VM で Linux をインストールすることになりそう。~~
  VM は別にインストールするのは変わらない
- ~~では Linux でもいいのではと調べ始める(普段は Ubuntu 16.04)~~
  メイン Void Linux、AntiX を試している
- systemd があまり好きではないので、systemd free なディストリビューションを探すがどれもいまいちっぽい
- 派生ディストリビューションではないものだと Gentoo が最初から systemd フリーだが、ビルド時間が長くて何度も試す気になれない（※ カーネルの最適化はそれはそれで楽しいが）
- Debian ベースが好きなので Devuen を試すが、アクティビティが見えない
- Arch Linux ベースの ArtiX を試す。かなり簡単で、これでいいかもと思った。
- そうこうしていると Alpine の 3.7 がリリースされて UEFI と grub をサポートしたので試してみる。(syslinux は忘れた）
- Docker のベースOSになりそうなので、パッケージの更新が比較的アクティブのように見えるので当面 Alpine を試してみる。
- Mac -> windows -> linux で堂々巡り中
- ~~Apple が MacBook Pro のキーボードを改善してくれれば何の問題もないのだが、暫定で外付けキーボードを上に置いて運用してみているが、これでいいかもと思い始めた~~
  尊師スタイルは継続中、キーボードは改善されたけれど 30 万は出せない
VirtualBoxがディスク容量不足で起動しない

##概要
VirtualBoxで error.log のファイル容量が肥大化して仮想環境内での容量が足りなくなるとMySQLが起動せず、VirtualBoxが起動しなくなります。
##対応手順
###仮想環境を「シングルモード」で起動する
1.通常起動中に F8 ボタンを押します
2.起動コマンド画面になります。 「kernel～」の行を選択して、［E］キーを押す
3.起動コマンドの編集画面になります。 「 single」（先頭にスペースを入れる）と入力して［Enter］キーを押す
4.起動コマンド画面に戻ります。 「kernel～」の行末に「 single」が追加されていることを確認したら［b］キーを押す
![仮想環境でディスク容量が足りなくなったら_virtualbox.png](https://qiita-image-store.s3.amazonaws.com/0/212992/c4d532fd-9fc5-1b54-7634-2690ce0aabe0.png)
###MySQLの常時起動を止めます。
「chkconfig mysqld off」と入力して［Enter］キーを押す
### 肥大化したエラーログを削除する
「cd /var/log/httpd/」 と入力して［Enter］キーを押す
「rm error.log」 と入力して［Enter］キーを押す
 ※ 他にも肥大化したログファイルがあれば消しておく
###仮想マシンメニューのリセットボタンで再起動する
MySQLを使う前に色々と初期設定を行う


```開発環境
macOS High Sierra 10.13
ubuntu on docker
```

<B>1.クライアントライブラリ系をインストール</B>
クライアントから接続するための各種ライブラリをインストール

```apt-get install -y libmysqlclient-dev```
```pip install mysqlclient```

何をするものかはよく分かっていません。
```-y```は、
処理中に現れるプロンプトに対して常に"yes"と解答するらしいです。

<B>2.文字コードをutf8に変更</B>
インストール後は文字コードがlatin1になっているものも多いので全てutf8に変更する。
このままでも問題ないかもしれないが、昔から文字コードで悩んだことが多かったのでこのようにしました。

```
mysql> show variables like "%character%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+--------------------------
```

文字コードをutf8に変更

```
set character_set_client = utf8;
set character_set_connection = utf8;
set character_set_database = utf8;
set character_set_filesystem = utf8;
set character_set_results = utf8;
set character_set_server = utf8;
mysql> show variables like "%character%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | utf8                       |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

```

ただ、ログアウトすると元に戻ってた。。
my.cnfとかを変更しないとダメなようです。
以下のように追記したらOKでした。
（バージョンによって書きかたが違うようです。）

```/etc/mysql/my.cnf
[mysqld]
character-set-server = utf8
skip-character-set-client-handshake
[mysql]
default-character-set=utf8
```


最後にユーザなどを作成して一旦終了。


ユーザの追加などは以下サイトを参考させて頂きました	。
MySQLのユーザー作成でハマったこと解決策メモ。
http://blog.codebook-10000.com/entry/20130806/1375794910
Mac上でdocker、ubuntu、MySQLと環境を構築していく



```開発環境
macOS High Sierra 10.13
```

会社のMacBook Proをいろんな人と共用で使うためにどうすればお互いに影響させなく使えるのかなと考えた結果
1.docker for macをインストール
2.ubuntuをdocker上にインストール
3.各コンテナ上で色々と開発
とすることでMac環境自体はゴチャゴチャしないかなと思ったので一応行ったことをメモ程度に手順をまとめてみました。



<B>1.dockerをインストール</b>
サイトからdocker for Macのインストーラーをダウンロードしてインストール。特に悩むところなくできたので省略

<B>2.docker上にubuntuをインストール</b>
```docker pull ubuntu:xenial```

バージョンはこうやって指定するんですね。ためになりました。

<B>3.apt updateを実行</b>

```ubuntu起動
docker run -it ubuntu:xenial /bin/bash
```

この後、すぐにmysqlをインストールしようとしたらエラーになった。パッケージをアップデートしないとダメなんですね。基本と言えば基本ですね。

```update
apt update
```

<B>4.mysqlをインストール</b>
とりあえずインストールは簡単。

```
apt-get install mysql-server-5.7
mysql --version
mysql  Ver 14.14 Distrib 5.7.20, for Linux (x86_64) using  EditLine wrapper
```

ただ、実行する時に色々エラーが出た。


```
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)`
```

とか

```
service mysql start
 * Starting MySQL database server mysqld                                                                                        No directory, logging in with HOME=/
```

下の方のエラーは環境と権限がなかったということのようだったので下記コマンドを実行したら解決できた。上の方のエラーはいつの間にか出なくなった。


```
mkdir /home/mysql
chown mysql /home/mysql/
chgrp mysql /home/mysql/
usermod -d /home/mysql/ mysql
```

やっとログイン出来ました。

```
/etc/init.d/mysql start
mysql -uroot -p
Your MySQL connection id is 9
Server version: 5.7.20-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

```
ただ、
```mysql start```
ではエラーになって、
```/etc/init.d/mysql start```
と入力するとログインできたのが少しだけ気がかりでした。


以下参考にしたサイトです。ありがとうございました。
UbuntuでDockerでUbuntuでMySQL
https://qiita.com/Guf/items/59f3e5b60cf29a984c83
MySQLを起動すると「No directory, logging in with HOME=/」と表示される
http://d.hatena.ne.jp/graySpace/20140915/1410741641
【Java】要素が一つだけのコレクションを作成する

 Collectionsクラスには要素を一つしか持たないコレクションを作成するメソッドが用意されている。

* singleton
* singletonList
* singletonMap

それぞれに要素一つのSet、List、Mapを返す。

```java
import java.util.Collections;
import java.util.Set;
import java.util.List;
import java.util.Map;

import java.util.Collections.ImmutableSet;

class CollectionsSingleton {
    public static void main(String args[]) {
        Set<String> s = Collections.singleton("a");
        // s.add("b"); // UnsupportedOperationException
        System.out.println(s);

        List<String> l = Collections.singletonList("a");
        System.out.println(l);

        Map<Integer, String> m = Collections.singletonMap(0, "a");
        System.out.println(m);
    }
}
```
返されるコレクションは不変。
要素の追加などを行おうとすると、UnsupportedOperationExceptionがスローされる。

# 参考
* [Collections（Java Platform SE 8）](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Collections.html#singleton-T-)
Wordpress WP_REST_APIで投稿データを取得する

##json取得

Wordpressの4.7から標準対応になったWP_REST_APIが大変便利だったのでここに使い方を纏めておきます。

まずは対応しているサイトがどうかを下記のURLを入れて確認してみましょう。
そのサイトの全投稿記事のjsonデータが見れたらWP_REST_APIに対応しております。

```URL
http://example.com/wp-json/wp/v2/posts
```

特定の記事だけを指定したい場合は下記のURLです。

```URL
http://example.com/wp-json/wp/v2/[投稿ID]
```

最新記事10件だけ表示させたい場合は

```URL
http://example.com/wp-json/wp/v2/posts/?filter[post_per_page]=10
```

##json出力例

```html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>WP REST APIテストページ</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    <script type="text/javascript">
      $(function() {
          $.getJSON( "http://test55.sakura.ne.jp/wp-json/wp/v2/posts/?filter[post_per_page]=10", function(results) {
              $.each(results, function(i, item) {

                  var date = new Date(item.date);
                  yy = date.getFullYear(date);
                  //console.log(yy);
                  mm = date.getMonth() + 1;
                  //console.log(mm);
		　dd = date.getDate();
                  //console.log(dd);

                 $("ul#mylist").append('<li class="flex"><time datetime="' + yy + mm + dd + '">' + yy + '/' + mm + '/' + dd + '</time><a href="' + item.link + '">' + item.title.rendered + '</a></li>');
              });
          });
      });
    </script>
  </head>
  <body>
    <h2>お知らせ 最新10件</h2>
    <ul id="mylist">

    </ul>
  </body>
</html>
```
Mapr v6.0がUbuntu16.04 LTSに対応されたらしいのでインストールしてみた

# ついにMaprがUbuntu16.04 LTSに対応！
<a href="https://maprdocs.mapr.com/home/">Maprドキュメントページ</a>
執筆時点ではまだv5.2のページに飛びますが、たぶん明日にはすべて対応されるんじゃないでしょうか？

なお、今回は<a href="https://qiita.com/nomurasan/items/4aed21a7036daeab3e7d">前回の記事（ハードウェアRAIDコントローラーをソフトウェアRAIDしようとして起動しなかった話）</a>を書いた環境をそのまま使ってます。
記事先にもありますが、Ubuntu14.04だとハードウェアRAIDコントローラーと衝突しましたが、Ubuntu16.04だとすんなり入ったので、ここでもそうしてます。

改めて明記しますが、ここで実施しているOSはUbuntu Server 16.04 です。

# 手順
だいたいはこの記事<a href="https://qiita.com/bigt23/items/26f56b73df8996ede61b">（VirtualBox上でMapRをインストールしてみる）</a>の通りです。
Ubuntu16.04用に以下を補足。

## OSインストール
基本的にはガイドの勧めるままにインストール。
念のため、英語でやってます。
パーティションはシステムが入るディスク（sda,hda）のみ入れたのと、ネットワークを別にしたかったのでアダプターを固定IPにしたぐらい。
ユーザーのホームディレクトリの暗号化をする場合、ちょっとした知識が必要になるので、Linux自体に慣れてない・練習用に環境を作りたい程度であれば暗号化はしない方がいいかもしれない。
私はSWAPを設定する時にちょっとハマった。
<a href="https://askubuntu.com/questions/34519/how-to-disable-cryptswap">How to disable cryptswap?</a>

## OSインストール直後
ネットワークの設定とかユーザーの設定とかいろいろ。

<a href="ubuntu ユーザを追加して sudo 権限をつける">https://qiita.com/white_aspara25/items/c1b9d02310b4731bfbaa</a>
<a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230926/"></a>

やらかした時なんかは、
<a href="http://tatsuyaoiw.hatenablog.com/entry/2012/07/13/003954">Debian/Ubuntu でインストール後にホスト名を変更する方法</a>
なんてのもある。

### ネットワークについて
細かい設定は<a href="https://qiita.com/koshilife/items/2fa1436248f1d4938861">Ubuntu14.04のルーター化</a>を参照のこと。
ただし、

```
sudo ipdown (eth0)
sudo ipup (eth0)
```

は使えないので、

```
sudo systemctl restart networking
```

としましょう。
あとはこの辺り。
<a href="http://maruchan-shiro123.hatenablog.com/entry/2015/04/05/181854">UbuntuでNATを有効にしてルータ化する</a>

ほか、以下は参考・自分の勉強の教材にさせてもらいました。
<a href="http://shasou.blogspot.jp/2012/09/ubuntunic1204lts.html">[Ubuntu]NICを二枚使うときの注意[12.04LTS]</a>
<a href="http://www.clear-code.com/blog/2010/11/19.html">Ubuntu PCをルータ代わりにして、新しくLANを構築してみる</a>

## Maprインストール
wgetしてsh走らせたらこんなエラーになりました。
<a href="https://community.mapr.com/thread/22132-mapr-install-failure">MapR Install Failure</a>
ログ見ればわかるんですが、pythonあたりが怪しそうです。
私の環境では

```
which python
```

で何も出力されてなかったので、パスが通ってないだけかと思ってpython3にシンボリックリンクを張ったんですが、ここでもエラーになったのでpython2.7系を入れて、そちらで対応しました。

## Webインストーラーを起動する
単純に手元のブラウザでアクセスするだけなので、ここで困ることはほとんどないんじゃないでしょうか？
Ubuntu14.04とMapr v5.2の時は非常に苦労したものですが、本バージョンではあっさりと成功。
ただ、**再起動した後の挙動がめちゃくちゃアヤしいのはv5.2から変わってなさそう**です。

### Mapr用のマシンにsshで接続していた時のトラブルなど
<a href="https://blog.mittostar.info/2012/11/10/known_hostsに登録されたホストキーを変更する/">known_hostsに登録されたホストキーを変更する</a>

# 雑談
Windows10ならUbuntuベースのLinuxが入るらしい。
<a href="https://qiita.com/Aruneko/items/c79810b0b015bebf30bb">Windows Subsystem for Linuxをインストールしてみよう！</a>

私はcmdのコマンドに慣れてないのでBAT作るのつらい、という理由でコマンドの拡張のためだけに入れたけど、ちょっとした環境を作るだけなら非常に優秀そうな印象。
❄️JavaScript Very Simple "To Do List"

<img width="177" alt="スクリーンショット 2017-11-21 19.30.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/209256/f956f82c-ce83-f026-4c56-2fdcef2c31a3.png">


---


Run this, and make sure you're using the latest version of Node

```
$ node -v

v8.9.1
```


```
$ mkdir node_js   (you can name it whatever you want)

$ cd node_js

($ atom .)
```
Then install **ejs**,  it will create the **node_modules** file.

```
$ npm install ejs
```

Create a **server.js** file, and write these code below.

```server.js
var http = require("http"),
fs = require('fs'),
ejs = require('ejs'),
qs = require('querystring'); 

var server = http.createServer();
var template = fs.readFileSync(__dirname + '/public_html/todolist.ejs','utf-8');
var posts = []; 
function renderForm(posts,response){
  var data = ejs.render(template,{
    posts: posts
  });
  response.writeHead(200, {"Content-Type": "text/html"});
  response.write(data); 
  response.end();
}
server.on('request',function(request, response) {
  if(request.method === 'POST'){
    request.data = "";
    request.on("data",function(chunk){
      request.data += chunk; 
    });
    request.on("end",function(){
      var query = qs.parse(request.data);
      posts.push(query.name);
      renderForm(posts,response);
    });
  } else{
    renderForm(posts,response);
  }

});

server.listen(8080);
console.log("Server is listening");

```

Create a  **public_html** folder and  a **todolist.ejs** file in it.
It should look like this.

<img width="169" alt="スクリーンショット 2017-11-21 19.18.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/209256/c0dbc3ae-82f1-f148-1aa8-9e3fe73ead93.png">



```todolist.ejs
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>To Do List</title>
</head>
<body>
  <h1>To Do List</h1>
</br>
<form method="post">
  <input type="text" name="name">
  <input type="submit" value="add!">
  <ul>
    <% for (var i = 0; i < posts.length; i++){ %>
      <li><%= posts[i] %></li>
      <% } %>
    </ul>
  </body>
  </html>

```

To run the server,

```
$ node server.js

Server is listening
```

Now you can access to http://localhost:8080/ to see your app!



This is from 
https://dotinstall.com/lessons/basic_nodejs
Thank you! dotinstall:heart_eyes:!
パッケージ管理Tips

# 概要
portsなどでパッケージをインストール・アップデートする時の自分用のメモです．もしこんな便利なコマンドあるよみたいなのがありましたら教えてください．環境は10.3-RELEASE-p17です．

# 古いパッケージを調べる
pkgの場合

```
pkg version -v
```

portsの場合

```
portmaster -L
```
portmasterの場合依存関係でカテゴリ分けされて表示されるので便利．他もろもろやってくれるのでおすすめ．`-a`は使うな．

# パッケージのデータベースを更新する
portsの場合

```
portsnap fetch update
```

pkgの場合

```
pkg update
```

# インストール済みパッケージの脆弱性を調べる
```
pkg audit
```

# UPDATINGを検索する
アップデートに際しての注意事項が`/usr/ports/UPDATING`に書かれている．portsの名前が変わっただとか，ビルドする時にビルドオプションが必要かもしれないよとか．アップデート前とかアップデート中に止ったりした時に見るといい．見るのに便利なコマンドが以下．

```
pkg updating [パッケージ名]
```

# インストール済みパッケージの依存関係を調べる
あるpkgが依存しているパッケージを調べる(dependences)

```
pkg info -d [パッケージ名]
```

あるpkgが依存されているパッケージを調べる(depended on)

```
pkg info -r [パッケージ名]
```

# バージョンを変える
以下はインストール済みのportを新しいportsに置き換えるコマンドである
主にメジャーバージョンアップに用いられる(php55からphp56とか)
またportsの名前が変わった時など

```
portmaster [Common flags] -o <new port dir in /usr/ports> <installed port>
```

# リビルドする
例

```
portmaster -R -r ruby-1.9
```

`[-R]-r`:  指定したportとそれに依存するものをリビルドする
`-R`:  `-[rf]`と組み合わせて使うことで前回実行時にアップデートされたportsをスキップする（`[]`はまたはの意）

# make時のオプションを指定する
例

```
portmaster wordpress -m --ignore-vulnerabilities
```


# インストール済みパッケージの情報を見る

```
pkg info [パッケージ名]
```

# インストール済みportsの一覧を表示
```
pkg info
```

# アンインストールする

```
pkg delete [パッケージ名]
```

# pkgでアップデートを実行する

```
pkg upgrade # 全部
pkg upgrade hoge # hogeだけ
```

`-n`でdry-rynする

# make.conf
/etc/make.confでmake時のオプションをあらかじめ設定できる

```
. if ${.CURDIR} == "/usr/ports/editors/vim"
OPTIONS_UNSET=		X11
. endif
```

また使用するデフォルトのバージョンを指定することもできる（参考: [DEFAULT_VERSIONS - FreeBSD Wiki](https://wiki.freebsd.org/Ports/DEFAULT_VERSIONS)）

```
DEFAULT_VERSION+= PHP=7.1
```
使用できるバージョンは`/usr/ports/Mk/bsd.default-versions.mk`で定義されている．
これを使うことで例えば`portmaster wordpress`などとやった時に7.1のPHPを使ってくれる．
【Unity Remote 5】実機の画面が動かない



ジャイロを有効にしていないだけだった

```md:構成
VR Player
　　┗ Main Camera
```

`VR Player`に以下のスクリプトをアタッチ

```c:GyroRotate.cs
using UnityEngine;
using System.Collections;
public class GyroRotate : MonoBehaviour {

	private Gyroscope gyro;

	void Start () 
	{
		if (SystemInfo.supportsGyroscope)
		{
			gyro = Input.gyro;
			gyro.enabled = true;
		}
		else
		{
			Debug.Log("Phone doesen't support");
		}
	}

	void Update () 
	{
		transform.Rotate (-Input.gyro.rotationRateUnbiased.x, -Input.gyro.rotationRateUnbiased.y, 0);
	}

	void OnGUI()
	{
		GUILayout.Label ("Gyroscope attitude : " + gyro.attitude);
	}
}
```

これでUnity側でGame Windowを見ている間、スマホ実機のジャイロを取得して画面を動かすことができる。


> 参考
[【Unity】「Unity Remote 5」の使い方](https://vracademy.jp/blog/?p=750)
[How to enable head tracking in Gear VR via Unity Remote 5 on android?](https://answers.unity.com/questions/1285833/how-to-enable-head-tracking-in-gear-vr-via-unity-r.html)
痛み止めの飲み過ぎをGoogleHomeにチェックしてもらう

#はじめに
[Google Home、IFTTT、Googleスプレッドシートを使って独自音声コマンドでログをとる（ついでにNode.jsやngrokやらも使ってLINEやGoogle Homeに通知する）](https://qiita.com/miso_develop/items/be562d8a823ad2639d94)
を読んでいて、痛み止めのような頓服的な薬（一日n回まで、前回からn時間以上経過後服用可能)のチェックに使えないものかと作成してみた。
###Googleスプレッドシートへのrowの追加のIFTTTのレシピ
「this」も「that」もいつもの手順
####Googleスプレッドシートの内容#
<img width="279" alt="キャプチャ1.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/188540/1f6b28f8-58d2-99f3-a02c-00b762af0ae4.png">
必ず日付情報は最後の行に一旦書き込まれます
##服用チェック
```addDate.js
function addDate() {
  setDate(1, "yyyy/M/d");
  setDate(2, "H:m:s");
  checkDate();
}
```
日付と時間をセルにセットした後にcheckDate()を呼ぶように追加しました、

```checkDate.js
function checkDate() {
// 宣言
  var lineUrl = "https://maker.ifttt.com/trigger/drug_log/with/key/xxxxxxxx?value1=";
  var googleurl = "https://xxxxxxxx.ngrok.io/google-home-notifier";
  var ansText;
  
  searchDate(dateRows);//当日と同一日セルの取得

  switch (dateRows.length) {
    case(1):
      ansText = "服用可能です（本日一回目）"
      break

    case(2):
      var dates2 = sheet.getRange(1, 2, lastrow).getValues()
      var m1 = Moment.moment(dates2[dates2.length - 2][0])
      var m2 = Moment.moment(dates2[dates2.length - 1][0])
      var m3 = m2.diff(m1, 'h', false)
      var m4 = 4 - m3

      if (m3 < 4) {
        // 一定時間以上経過していない場合はrowを削除
        sheet.deleteRow(lastrow)
        ansText ="四時間以上間を開けて服用しましょう。あと" + m4 + "時間経過後服用できます"
      } else {
        ansText ="服用可能です（本日二回目）"
      }
      break

    case(3):
      ansText = "服用は一日二回までです。"
      break

    default:
      sheet.deleteRow(lastrow)
      ansText = "服用は一日二回までです。"
      break
  }
  
  // LINE 
  UrlFetchApp.fetch(lineUrl + ansText);
\
  // GoogleHome
  var payload =
    {
       "text" : ansText
     };
  var options =
    {
      "method" : "post",
      "payload" : payload
    };
  var response = UrlFetchApp.fetch(googleurl, options);
        
}
```
- 当日の行番号配列が一つだけなら一回目メッセージ
- ２つなら一回目と二回目の時間差を求め(時以下切り捨て)
    - 4時間未満なら警告メッセージ、最終行を削除
    - 4時間以上なら二回目メッセージ
- 3回目ならエラーメッセージ
- 4回目以上ならエラーメッセージ、最終行を削除
の判定と行操作を行った後に、LINE Notififyとgoogle-home-notifierへ送信します

```searchDate.js
function searchDate(dateRows) {
  var tDate = formatDate(new Date(), "yyyy/M/d");
  lastrow = sheet.getLastRow();
  var dates = sheet.getRange(1, 1, lastrow).getDisplayValues(); 

  for(var lr = lastrow; lr >= 1; lr--){
　  if(dates[lr - 1] == tDate){
      dateRows.push(lr);
    }
　}

  return dateRows;
}
```
今日の日付を取得し、日付行と一致した行番号を配列に追加します
セルに表示している内容を取得するためにgetValues()ではなくgetDisplayValues()
##今回ハマったところ
 - MakerChannelに渡すのはLINE NotififyのキーではなくWebhooksのキー
 - google-home-notifierのexample.jsを使用するのであれば、話させたい文字は、"payload" : { "text" : "ほげほげ" }と入れ子になる　[Class UrlFetchApp](https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetch(String,Object))
 
##今後に向けて
- ソースをリファクタリングしたい
- GoogleHomeに話しかけたら、GoogleHomeに返事、GoogleAssistantに入力したらLINEに返事に分けたい

##おわりに
最近IFTTTでGoogleスプレッドシートの行の追加ではなく、セルの値を上書き更新する機能が追加されましたね、セルの値で検索を行い、結果を返してセルの値を消すなんてこともできますね
Ubuntu上のRにGSLをセットアップする

# UbuntuのRにGSLがインストールできない
Ubuntu上のRに、cranからGNU Scientific Library (GSL) をインストールしようとしたところ、次のようなエラーが出てインストールできない。

```
>install.packages("gsl")

（中略）
no configure: error: gsl-config not found, is GSL installed? 
ERROR: configuration failed for package ‘gsl’
```

どうやら、Rにgslを入れる前にUbuntuにGSLをセットアップしろということらしい。
いろいろと調べてソースから最新版をコンパイルするなどしたが、うまくRが読んでくれなくて困った。

# 先にaptでUbuntuにGSLを入れる必要がある
結局、aptでr-cran-gslをインストールすれば解決した。

```
$ sudo apt-get install r-cran-gsl
```
郵便番号を入力すると住所が自動入力されるライブラリ

#郵便番号を入力すると住所が自動入力されるライブラリ

AjaxZip3のJSライブラリで郵便番号から住所を取得する。
※Google Codeの閉鎖（～2016年1月）

```
<script src="https://ajaxzip3.googlecode.com/svn/trunk/ajaxzip3/ajaxzip3-https.js" charset="UTF-8"></script>

↓↓↓↓↓

<script src="https://ajaxzip3.github.io/ajaxzip3.js" charset="UTF-8"></script>
```
Raspberry Pi で ReSpeaker を使って 4つのマイクを使った音声方向取得まで

######株式会社XSHELL　デベロッパー　植田歩
##概要
###ReSpeakerとは
Seedstudioで販売しているマイクアレイモジュールで、RaspberryPiのアドオンボード。
キーワード検知などのライブラリを使うことでAmazon Alexaのように使える。
今回はReSpeaker（ReSpeaker 4-Mic Array for RaspberryPi）を使用し、搭載されている4つのマイクから音の聞こえる方向の測位を検証を行った。

##環境

- mac OS X El Capitan
- Raspberry Pi 3
- OS 2017-08-16-raspbian-stretch-lite.img
- seeed社　ReSpeaker 4-Mic Array for Raspberry Pi


##公式の環境構築手順
http://wiki.seeed.cc/ReSpeaker_4_Mic_Array_for_Raspberry_Pi/

##今回やった手順

```

sudo apt-get update
sudo apt-get upgrade
sudo apt-get -y install vim
sudo apt-get -y install python-pip
sudo apt-get -y install python-dev

sudo apt-get -y install swig
sudo apt-get -y install libboost-python-dev
sudo apt-get -y install libpulse-dev
pip install pocketsphinx webrtcvad

sudo apt-get -y install python-pyaudio
sudo apt-get -y install libasound-dev
sudo pip install pyaudio respeaker --upgrade

sudo apt-get -y install portaudio19-dev
sudo pip install --pre pyusb
sudo pip install numpy

mkdir ~/git
cd ~/git
sudo apt-get -y install git
git clone https://github.com/respeaker/seeed-voicecard.git
git clone https://github.com/respeaker/mic_array.git

cd seeed-voicecard
sudo ./install.sh 4mic
sudo reboot

```


次に、オーディオ出力用のRaspberry Piのヘッドフォンジャックを選択します。

```

sudo raspi-config

```

SPIを有効にする：

```

sudo raspi-config
cd ~/git/mic_array
vim mic_array.py
```

最終行のコメントアウトを8micから4micに変更

```

python mic_array.py
```

成功。音が発生した方向の角度が数字で表示される。（DOA）

```

vim vad_doa.py
```
チャンネルを8から4に変更して実行

```

python vad_doa.py
```
実行結果

```

Use ac108
00000000000000000000011111111000000000001111111111111000000000
262
0000000000000000011111111111111111
337
11111111111111111111
```
実行成功。
音が発生した方向が360までの数値で表される。
0は音がない時。1は音がある時に表示される様子。

再起動・シャットダウンで問題なく再現するか確認。

```

sudo reboot
python vad_doa.py
sudo shutdown -h now
python vad_doa.py
```

実行成功。


##調査コマンド

```

arecord -L
sudo arecord -l
cat /proc/asound/modules
cat /proc/asound/pcm
cat /proc/asound/cards
cat /proc/asound/devices
cat /proc/asound/card0/pcm0c/info
cat /proc/asound/card0/pcm0p/info
cat /proc/asound/card1/pcm0c/info
```

---
######株式会社XSHELL　デベロッパー　植田歩
[XSHELL](https://xshell.io/)はSBCを使いやすくするソリューションを提供しています。
[isaax](https://isaax.io/)、[IoTit](https://github.com/xshellinc/iotit)ぜひご使用になってご意見を頂きたく思います。
共に素晴らしいプロジェクトを実現させましょう！

---
vimでCoqを使えるようにする


### 環境
OS: MacOS High Sierra
neovim: v0.2.0

deinを使ってインストールしています。

### インストールするもの
* [the-lambda-church/coquille](https://github.com/the-lambda-church/coquille)
* [let-def/vimbufsync](https://github.com/let-def/vimbufsync)

## インストール

```dein_lazy.toml
[[plugins]]
repo = "let-def/vimbufsync"
on_ft = "coq"

[[plugins]]
repo = "the-lambda-church/coquille"
on_ft = "coq"
depends = ["vimbufsync"]
hook_source = """
  nmap <silent> <C-c><C-l> :CoqLaunch<CR>
  nmap <silent> <C-c><C-n> :CoqNext<CR>
  nmap <silent> <C-c><C-u> :CoqUndo<CR>
  nmap <silent> <C-c><C-c> :CoqToCursor<CR>
"""
```

coquilleをインストールしても動かなくてREADMEをみるとvimbufsyncと言うものが必要らしかった。
なのでdependsにvimbufsyncを指定してインストール
キーマッピングは各自の好みにおまかせします。

READMEに進められていたのは

```
" Maps Coquille commands to <F2> (Undo), <F3> (Next), <F4> (ToCursor)
au FileType coq call coquille#FNMapping()
```

だったけど、やってみるとF3とか押しにくいなあと思ったので変えてみたけど、今のも微妙かも
何かおすすめのキーマッピングがあれば教えてください

スクショはこんな感じです
<img width="1439" alt="スクリーンショット 2017-11-21 18.39.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/172408/50a326ff-ff7b-ae43-2b2e-9243b09b19a7.png">
動画を編集してみる

#Premiere Proを使う

まずPremiere Proとは・・

>1.素材の内容を確認できるソースモニタ
2.編集している映像をプレビュー確認出来るモニタ
3.ムービー全体を確認できるタイムライン
4.音を視覚的に確認できるオーディオメーターパネル

>が見やすくて作業しやすい
http://jmplanning.net/premire/227.html

らしい。
最近ではAppleのFinal Cut Pro Xも主流。
~~ムービーメーカーしかしらない・・~~

##After Effectsとの違い

After Effectsは映像を加工
Premiere Proは動画を編集

AEはパチンコPVみたいな煽り系に使われてるイメージ


#Premire Proの使い方


基本はAdobe公式を見よう
https://helpx.adobe.com/jp/premiere-pro/how-to/easy-video.html

①映像素材の読み込みはオッケー。
②シーケンス設定　

シーケンス設定とはなんぞや

##シーケンス設定とは

>「シーケンス＝映像の土台」というのは何度かお話してますね
そもそも映像の土台とはなんでしょうか？

>映像のサイズというのはいろんなサイズがあります、８K、４K、フルHD、HD、SD、etc
映像のサイズは主にピクセルというので表記されています
よく目にするのは下の３つのサイズです


>映像のサイズの呼び方は少し特殊で縦のピクセル数で表します

>1920×1080は「1080」
1280×720は「720」
720×480は「480」

>http://rgblooks.com/post-159/

とりあえず市販によく使われている「AVCHD」を選択
AVCHD720p、君に決めた！
(30秒で5000kb以内にしたいから最小で)
Laravel で Model から条件を指定していないクエリビルダ（Eloquent Builder）オブジェクトを取得

Eloquet Model には `query()` というメソッドが存在し、それで取得できる。

```
>>> App\User::query()
=> Illuminate\Database\Eloquent\Builder {}
```

例えば、Commands で以下のようなことをしたいときにいい感じに書ける。

```php
$query = App\User::query();

// オプションが指定されていたら条件を付与する
if (!empty($this->option('status'))) {
    $query->where('status', $this->option('status'));
}

// Builder オブジェクトに対する処理（例えば chunk）
$query->chunk(10, function ($users) {
    // 処理
});
```


## 確認環境

* PHP 7.0
* Laravel 5.4
EmulatorのMobile SafariをデバッグしようとしたけどSimulatorがメニュー項目にないとき

[検証機なし！iOS EmulatorでMobile Safariを快適にデバッグ - Qiita](https://qiita.com/toruta39/items/a570241739d8c1f41c75)

こちらの記事にあるとおりにemulatorのsafariをデバッグしようとしたが、開発メニューに「Simulator」なる項目が現れない事がある。

そうゆうときは、一度macを再起動すると治った。
（どう云う理由なのかはよくわからない。。。。）


## 参考:
https://stackoverflow.com/a/21278311/5229454