OmniAICreator/Qiita-1.07M huggingface dataset:
AppveyorでElectronのビルドで落ちる時

10時間前からビルドが落ちるようになった。
いずれ修正されると思うが、`"extract-zip": "=1.6.0"`を`devDependencies`に追加すればいい。

該当issueは以下

https://github.com/electron/electron/issues/9323
Mastodon複数インスタンスのnotificationsをプッシュ通知する

# 目的

マストドン複数インスタンスの各種通知をiPhoneへプッシュ通知したい。
（すでに複数インスタンス対応のアプリが出てきているので必要性は薄れてしまったが勉強のために。）

# 利用言語・サービス

- Go言語
- mattn/go-mastodon - https://github.com/mattn/go-mastodon
- AWS SQS
- IFTTT(webhook/push)
- moru3/mastodon-notifications-sqs（作成）
- moru3/sqs-to-ifttt-webhook（作成）

# リポジトリ
以下の2つに分けて実装。1つにまとめても問題はないはず。

## mastodon-notifications-sqs
複数マストドンインスタンスに対してStreamingAPIを利用してnotificationsを待ち続ける。
notificationを取得したらAWS SQSのキューに対してメッセージをプッシュする。

https://github.com/moru3/mastodon-notifications-sqs

## sqs-to-ifttt-webhook
AWS SQSの特定のキューから定期的にメッセージを取得。
取得した内容をvalue1というPOSTデータとしてIFTTTのwebhookURLに対してPOSTする。

https://github.com/moru3/sqs-to-ifttt-webhook

# 下準備

## AWS SQSのキューの準備
AWS Management Console-> Simple Queue Serviceからキューの作成を実施。
設定の内容は任意。
作成後キューのURL(例：`https://sqs.ap-northeast-1.amazonaws.com/111111111/hogehoge`)を確認しておく。このURLに対してメッセージをPOST/GETする。

## IFTTTのサービス設定

https://ifttt.com/maker_webhooks

IFTTTのmaker webhooksを利用可能状態にし、
「webhook受信->プッシュ通知」のイベントを作成する。
プッシュ送信内容は今回はvalue1だけを指定する。

<img width="408" alt="スクリーンショット 2017-04-30 18.03.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/57142/250890a5-6b62-b80b-6abd-f2dfc9c87a80.png">

WebhookのURLは作成したWebhookの詳細にあるURLに対してブラウザでアクセスすると利用方法がわかる。
URLの一部にevent名、クエリにシークレットが入りそれで認証している。

```
[webhook-URL例]
https://maker.ifttt.com/trigger/[event_name]/with/key/[secret_key]
```

## AWSの認証情報設定
SQSが利用できるAWSのIAMユーザの認証情報をサーバの~/.aws/credentialsに記述する。

```
[default]
aws_access_key_id = xxxxxxxxxxxx
aws_secret_access_key =  xxxxxxxxxxxxxx
```

## 通知を受けたいインスタンスの認証情報を取得
moru3/mastodon-notifications-sqsのREADMEにも記述しているが、
マストドンのAPIを利用するためには、対象のインスタンスに対してclient_idとclient_secretを取得する必要がある。
curlで取得可能。

```
# 取得
curl -X POST -sS https://xxxxxxxxxxxxxx/api/v1/apps \
   -F "client_name=xxxxxxxxxx" \
   -F "redirect_uris=urn:ietf:wg:oauth:2.0:oob" \
   -F "scopes=read write follow"

# 結果
{"id":1,"redirect_uri":"urn:ietf:wg:oauth:2.0:oob","client_id":"xxxxxxxxxxxxxx","client_secret":"xxxxxxxxxxxxxxxxxxxxx"}%

```

# 利用
実行環境にて以下を実行する。
実行前にsetting.ymlを作成しておく。

- moru3/mastodon-notifications-sqs
- moru3/sqs-to-ifttt-webhook

# 少し動かしてみた感想

- 通知多すぎ問題
- なぜか認証が通らないインスタンスがあった（閉じている？）
- 1インスタンスへの通知監視が止まってしまっていることがあった
Polymer App Toolbox(日本語) Using the Toolbox/App storage  〜アプリケーションのストレージ〜

[目次へ移動](http://qiita.com/jtakgiuchi/items/e5160ba7d039ca5b05a4)

[翻訳ドキュメントの管理ページ](https://github.com/jtakiguchi/polymer-docs-japanese-translation)

> `app-storage`**要素はプレリリースです。** APIは変更される可能性があります。

`app-storage`関連の要素は、アプリ内のデータを管理するための新しいツール群を提供します。初期ツールには、アプリをFirebaseやPouchDBを可能にする要素が含まれています。

## Firebaseとの統合

Firebase 3.0.0 SDKは、`app-storage`で構築された新しいFirebase要素のセットをサポートしており、[PolymerFire](https://github.com/Firebase/PolymerFire)と呼ばれています。これらの要素は、Firebase SDKと垣根のない統合を提供し、アプリ初期化時のユーザ認証、データベースアクセスのような処理をこれまで以上に簡単なものにしてくれます。

### オフラインデータのミラーリング

[\<app-indexeddb-mirror>](https://www.webcomponents.org/element/PolymerElements/app-storage/app-indexeddb-mirror)要素は、Firebaseのようなデータベースに読み取り専用のミラー機能を提供します。これにより、接続可能なネットワークがない場合でも、ユーザーは自身の個人データにアクセスできます。

Firebaseには、ユーザがアプリケーションの利用中に突然トンネルを通過した場合など、ネットワーク接続の一時的な切断から回復する能力もあります。ネットワークに再接続するとすぐ、Firebaseはサーバとの連携と更新を継続します。しかしFirebaseやその他の人気のストレージを使用したレイヤがうまく処理できないケースは他にもあります。例えば、ユーザーがオフライ環境でアプリ起動したような場合です。

## PouchDB要素

Polymerの[app-pouchdb](https://www.webcomponents.org/element/PolymerElements/app-pouchdb)コンポーネントに含まれる要素は、PouchDBのドキュメントへのアクセス、データベースへのクエリ、ローカルデータベースとリモートデータベース間の同期、さらにはリモートのCouchDBインスタンスを使ったユーザー認証などにも利用できます。PouchDBはローカルのIndexedDBデータベースとデータを自動的に同期させるので、プログレッシブウェブアプリ(PWA)にオフライン優先のデータアクセス機能を追加することは容易なことではありません。
Polymer App Toolbox(日本語) Using the Toolbox/Localization  〜ローカリゼーション〜

[目次へ移動](http://qiita.com/jtakgiuchi/items/e5160ba7d039ca5b05a4)

[翻訳ドキュメントの管理ページ](https://github.com/jtakiguchi/polymer-docs-japanese-translation)

> ローカリゼーションの機能はプレリリースです。APIは変更されることがあります。

[Polymer.AppLocalizeBehavior](https://www.webcomponents.org/element/PolymerElements/app-localize-behavior)は、アプリケーションの国際化をサポートする[format.js](http://formatjs.io/)ライブラリをラップしています。[Intl](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl)オブジェクトをネイティブにサポートしていないブラウザを使用している場合は、**自分でポリフィルを読み込む必要があります。**polyfillの利用例は、[Intl.js](github.com/andyearnshaw/Intl.js)を参照してください。

`Polymer.AppLocalizeBehavior`は、`format.js`とまったく同じ[メッセージ構文](http://formatjs.io/guides/message-syntax/)をサポートしています。利用可能なメッセージ形式とオプションのリファレンスはformat.jsライブラリのドキュメントを参照してください。

コンテンツをローカライズして表示する要素には、それぞれ`Polymer.AppLocalizeBehavior`を追加する必要があります。これらの要素はすべて共通のローカリゼーションキャッシュを共有しており、翻訳は一度読む込むだけで済みます。

Polymer 1.x要素とPolymer 2.xのハイブリッド要素では、`AppLocalizeBehavior`を直接使用できます。クラススタイルの要素の場合は、`mixinBehaviors`メソッドを使用します。

## AppLocalizeBehaviorをインストール

2.0リリース候補(RC)の場合は、`2.0-preview`ブランチを使用します。：

~~~
bower install --save PolymerElements/app-localize-behavior#2.0-preview
~~~

## アプリケーションにローカリゼーションを追加

通常、メインアプリケーションが、ローカライズされたメッセージのロードと言語環境の設定を担います。

#### サンプルアプリケーション(クラススタイル要素)

~~~html
<dom-module id="x-app">
  <template>
    <!-- use the localize method to localize text -->
    <div>{{localize('hello', 'name', 'Batman')}}</div>
  </template>
  <script>
    class XApp extends Polymer.mixinBehaviors([Polymer.AppLocalizeBehavior], Polymer.Element) {
      static get is() { return 'x-app'}

      static get properties() {
        return {
          // set the current language—shared across all elements in the app
          // that use AppLocalizeBehavior
          language: {
            value: 'en'
          },

          // Initialize locale data
          resources: {
            value() {
              return {
                'en': { 'hello': 'My name is {name}.' },
                'fr': { 'hello': 'Je m\'apelle {name}.' }
              }
            }
          }
        };
      }
    }

    customElements.define(XApp.is, XApp);
  </script>
</dom-module>
~~~

一般的には、次の例に示すように、アプリケーションは外部ファイルからリソースをロードします。

#### サンプルアプリケーション(ハイブリッド要素)

~~~html
<dom-module id="x-app">
   <template>
    <!-- use the localize method to localize text -->
    <div>{{localize('hello', 'name', 'Batman')}}</div>
   </template>
   <script>
      Polymer({
        is: "x-app",

        // include the behavior
        behaviors: [
          Polymer.AppLocalizeBehavior
        ],

        // set the current language—shared across all elements in the app
        // that use AppLocalizeBehavior
        properties: {
          language: {
            value: 'en'
          },
        }

        // load localized messages
        attached: function() {
          this.loadResources(this.resolveUrl('locales.json'));
        },
      });
   </script>
</dom-module>
~~~

メインアプリケーションは、ポリフィル`Intl`の読み込みも担います。(上記には示されていません)

メッセージをローカライズする必要がある要素には、それぞれ`Polymer.AppLocalizeBehavior`を追加し、上記のように`localize`メソッドを使用して文字列を変換する必要があります。
kintone 論理回路シミュレータ・テンプレート

# kintone 論理回路シミュレータ

[SimcirJS ](https://kazuhikoarase.github.io/simcirjs/) という電子回路シミュレータのライブラリを使った kintone アプリです。

kintoneアプリテンプレートを[STORES](https://rex0220.stores.jp/items/5905a8ee02ac64aa83004a9f)に公開しましたので、興味のある方はお試しください。

![2017-04-30_17h29_45.gif](https://qiita-image-store.s3.amazonaws.com/0/100572/a41c46f4-e851-9c61-47cb-d5283f74a14d.gif)


# kintone テンプレート

[アプリテンプレートとは](https://help.cybozu.com/ja/k/admin/whats_template.html)

kintone は、アプリをテンプレート化することができます。
テンプレートは、zip ファイルとして書き出し、他のkintone 環境に読み込むことができます。

![2017-04-30_17h51_40.png](https://qiita-image-store.s3.amazonaws.com/0/100572/3d9e074a-776e-c891-314a-f027f5a82ecc.png)

# テンプレートからアプリ作成

![2017-04-30_17h53_27.png](https://qiita-image-store.s3.amazonaws.com/0/100572/6ca19cad-1502-8ea5-1e8a-809b4f23a105.png)

# アプリ構成

- 論理回路アプリ

論理回路シミュレータアプリです。

- 論理回路・部品グループアプリ

論理回路シミュレータアプリで作成した論理回路を部品として登録します。

# 部品グループの準備

下記の２レコードを登録します。

- 基本部品が、「基本部品1」

規定部品に DSO が追加されます。

- 基本部品が、「基本部品2」

規定部品に DSO, AND3端子などが追加されます。


![2017-04-30_19h17_26.png](https://qiita-image-store.s3.amazonaws.com/0/100572/430a520f-84a5-a04b-e50d-d830ed664653.png)

- 基本部品の設定

基本部品グループを展開して、「基本部品1」「基本部品2」の json 指定を変更することで、AND 4端子 などを設定できます。

![2017-04-30_19h59_29.png](https://qiita-image-store.s3.amazonaws.com/0/100572/b506ed19-6a46-4815-731b-927769efd594.png)



# 部品グループを利用

部品グループのルックアップ取得で、登録された部品がツールボックスに反映されます。

![2017-04-30_19h24_14.png](https://qiita-image-store.s3.amazonaws.com/0/100572/6d586d15-4d1f-1261-fc91-0930f0ef5808.png)


# 部品作成

部品にしたい回路を登録します。

JK-FF の作成例です。

![2017-04-30_19h37_51.png](https://qiita-image-store.s3.amazonaws.com/0/100572/66ee8e08-46d9-626a-c893-8783f19122f6.png)

# 部品を部品グループアプリに登録

部品サブテーブルに、作成した部品を登録します。

![2017-04-30_19h40_48.png](https://qiita-image-store.s3.amazonaws.com/0/100572/32f50130-d8d3-3bd2-5510-79e6928c8d4a.png)

# 登録した部品を利用

部品グループで、ルックアップ取得するとツールボックスに部品が表示されます。

![2017-04-30_19h48_17.png](https://qiita-image-store.s3.amazonaws.com/0/100572/537f6b04-b8d7-7d89-a793-53e1b0e116df.png)

# ストップウオッチ作成例

部品を組み合わせると、[ストップウオッチ](http://qiita.com/rex0220/items/3a09b0c59f381bfed795)も作成できます。

![2017-04-30_19h54_06.png](https://qiita-image-store.s3.amazonaws.com/0/100572/15d47a77-7914-2bb0-4118-01431b6cba77.png)



#関連リンク

[コード描き 荒瀬 一彦 のウェブサイトへようこそ。](http://www.d-project.com/) 
　SimcirJS　の開発者様です。
Vim で howm


## 概要
[qfixhowm](https://sites.google.com/site/fudist/Home/qfixhowm) を使うのが最善だろうけれど、使わない機能も多いのでメモ書き、検索に特化して他のプラグインで代用してみた。

## syntax
[hokorobi/vim-howm-syntax-mini](https://github.com/hokorobi/vim-howm-syntax-mini)
qfixhowm から一部 syntax のみを抜き出し。

## 新規作成
[thinca/vim-template](https://github.com/thinca/vim-template) を使用。

```vim:template.howm
:% s/<+DATETIME+>/\=strftime('%Y-%m-%d %H:%M')/g
:if search('<+CURSOR+>')
:  normal! "_da>
:endif
= <+CURSOR+>
[<+DATETIME+>]
```

（実際にはキーマップと関数は別ファイルに書いている。）

```vim
function! vimrc#EditHowmNew(dir) abort
  let dir = a:dir.strftime('/%Y/%m')
  if isdirectory(dir) == 0
    call mkdir(dir, 'p')
  endif
  let file = strftime('/%Y%m%d%H%M%S.howm')
  execute 'edit '.dir.file
  TemplateLoad
  " 行末尾追加でインサートモードへ
  startinsert!
endfunction
nnoremap <Leader>,c :call vimrc#EditHowmNew(g:howm_dir)<CR>
```

## タイトル検索
[Shougo/denite.nvim](https://github.com/Shougo/denite.nvim) を使用。

```vim
" 2017-03-30 現在の Denite では Windows で grep にディレクトリを渡すとエラーになる場合があるので cd する
function! vimrc#DeniteGrepHowm() abort
  execute 'cd '.g:howm_dir
  Denite -resume -buffer-name=denite-howm -cursor-wrap grep:::^=\\s
endfunction
nnoremap <Leader>,, :call vimrc#DeniteGrepHowm()<CR>
```

こちらはあまり使っておらず、[Paper Plane xUI で peco を使ってフォルダ配下を検索 - Qiita](http://qiita.com/hokorobi/items/34af38d57af9da6587f9) でファイラーから peco を使うことが多い。peco だと migemo が使えるので。

## 最近開いたファイルを開く
プレビューを使いたいので CtrlP でなく [Shougo/neomru.vim](https://github.com/Shougo/neomru.vim) + denite.nvim を使用。

```vim
nnoremap <Leader>,u :<C-u>Denite file_mru -auto-preview -input=howm<CR>
```
RAILS_ENV=production rails assets:precompile を Docker でやるための Dockerfile

Docker で rails の環境をつくりました。

それで、挙動確認のため

```
$ RAILS_ENV=production rails assets:precompile
```

をしようとしたら、yarn と node いれとかないとだめ、その過程で、`apt-transport-https` もいれないとだめと言われたので、rails 環境用の Dockerfile は以下のようになりました。

```bash:Dockerfile
FROM ruby:2.4
RUN apt-get update -qq && apt-get install -y \
    build-essential libpq-dev apt-transport-https

# node
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - \
    && apt-get install -y nodejs

# yarn
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
    && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
    && apt-get update && apt-get install -y yarn

RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
ADD . /myapp
```

全体はこちら
https://github.com/mochizukikotaro/docker-rails-mysql/blob/master/Dockerfile
SQL練習環境を整える

# はじめに
dockerでSQLを練習するための環境を構築する話です。ここで書いているのはRDBMSがPostgreSQLの場合です。psqlだけだと不便なので、rubyでも操作できるようにします。

# ディレクトリの構成
```bash
 .
 ├── Dockerfile
 ├── Gemfile
 ├── Gemfile.lock
 ├── docker-compose.yml
```

#  各ファイルについて
```:Dockerfile
 FROM ruby:2.2.0
 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev
 RUN mkdir /myapp
 WORKDIR /myapp
 ADD Gemfile /myapp/Gemfile
 ADD Gemfile.lock /myapp/Gemfile.lock
 RUN bundle install
 ADD . /myapp
```

```docker-compose.yml
 version: '2'
 services:
   db:
     image: postgres
   cmd:
     build: .
     volumes:
       - .:/myapp
     depends_on:
       - db
```

```Gemfile
 source 'https://rubygems.org'
 gem 'pg'
```

# 環境構築
```bash
 $ docker-compose build
 $ docker-compose up -d
```
# 停止
```bash
 $ docker-compose stop
```

# 2回目移行の開始
```bash
 $docker-compose start
```
# rubyスクリプトの実行
```bash
 $docker-compose run cmd ruby <file_name>
```
# psqlの実行
```bash
 $docker-compose run db psql -n -h db -U postgres
```
nオプションは日本語を使うためです。日本語を使わない場合は不要です。
グルメサイトもAMPカルーセル対応？サクっと調べて見た


先日、会社で仕事をしていたら、直属の上司に

「土曜日、渋谷でランチどう?」

と聞かれた気がして、「なんかランチに誘われているのか？ワクワク」
と思ってたら、全く違って、

どうやら、「渋谷　ランチ」と検索したところ、
検索結果のグルメサイトがどれもAMPカルーセル対応していたため、

「日本のGoogleでもグルメサイトがAMPカルーセル表示されてるけど、これ知ってた？」

|Google「渋谷 ランチ」で検索|
|:-:|
|![U1K2dOw0bgAAAAASUVORK5CYII=.png](https://qiita-image-store.s3.amazonaws.com/0/153088/0dc10570-2367-aa14-2ed1-11ca3a34ad9b.png "U1K2dOw0bgAAAAASUVORK5CYII=.png")|


っていう、話でした。
(ちょっとでも誘いを期待した自分が恥ずかしかったです笑)

。。

ということで、気になったので、グルメサイトのAMPカルーセルがどうなっているのか調べてみました!

## グルメサイト(レストランサイト)のAMPカルーセルは2016年11月21日から始まっている

[Googleのウェブマスター向け公式ブログ](https://webmasters.googleblog.com/2016/11/rich-cards-expands-to-more-verticals.html)を確認すると、昨年の11月の時点で

- レストランサイトとオンライン講座については、検索結果でリッチカード(カルーセル)対応してる
- AMP対応しているサイトは、カルーセル上でAMPラベルがつく

ということでした。
そのため、グルメサイトのAMPカルーセル自体は半年ほど前から行われいました。

## グルメサイトAMPカルーセルの波がついに日本にもやって来た。

これまで、AMPカルーセルといえば、ニュース系のみでした。

|Google「ルペン」で検索|
|:-:|
|![EYgHgH+F1coB3ZTp0eoAAAAAElFTkSuQmCC.png](https://qiita-image-store.s3.amazonaws.com/0/153088/c472e54c-54b0-1530-38cf-1eaea250f664.png "EYgHgH+F1coB3ZTp0eoAAAAAElFTkSuQmCC.png")|

ですが、この波がどうやらグルメサイトにもやって来たようです。

## グルメサイトの検索結果はこうなっている。

### 「渋谷 ランチ」のAMPカルーセル

![渋谷　ランチ.png](https://qiita-image-store.s3.amazonaws.com/0/153088/46200b6a-ded8-c5b2-f84e-434773dddf04.png "渋谷　ランチ.png")

### 「渋谷 カップルシート」のAMPカルーセル

「渋谷 ランチ」の例だとファーストビューにAMPカルーセルが表示されず、インパクトが小さいので、ファーストビューにもサイト専用カルーセルが表示されるキーワードを探してたら、ちょうど良いキーワードを見つけたので紹介。

![渋谷　カップルシート.png](https://qiita-image-store.s3.amazonaws.com/0/153088/b0f346f3-34cb-4d5f-e4f9-0e6b9cad5671.png "渋谷　カップルシート.png")

検索結果上位10位のうち、3つはサイト専用のAMPカルーセルに占領されるという驚きの結果に。

それにしてもGoogleのAMP対応の本気度はすごいです。

## まとめ
- グルメサイトもAMP対応すると、AMPカルーセルにサイトが表示される
- AMPカルーセルのほとんどがサイト専用のカルーセル(独占できちゃう)
- 実は日本の大手グルメサイトは結構AMP対応していた
- ランチには誘われたわけではなかった
bootstrapのモーダルウィンドウ

参考サイト
http://bootstrap3-guide.com/javascript/modal.html

参考サイトのHTMLコードを貼るだけで動く。

# 検索キーワード
bootstrap モーダルウィンドウ
bootstrap モーダルウィンドウ 中央
bootstrap モーダル
bootstrap モーダル 中央
rails bootstrap モーダルウィンドウ
rails bootstrap モーダル
rails bootstrap モーダルウィンドウ 中央
rails bootstrap モーダル 中央
macOSで画面キャプチャ効率を爆上げするSkitchを使おう


SNSやブログ、プレゼン資料に画面キャプチャを載せるケースはよくあります。
macOSの標準機能を使えば、全画面のキャプチャ、部分キャプチャ、クリップボードへのコピーなどが可能です（参考記事：「[macOSでの便利な画面キャプチャテクニック](http://qiita.com/tonkotsuboy_com/items/f8e98697456a1d2a7ebe)」。

しかし、「キャプチャに図形や文字を書き込みたい」「ある一部分だけは見せたくない」といった加工をする場合、プレビュー.appの画像編集機能を使ったり、Photoshop等の画像編集ツールを使用し加工する必要がありました。

**「[Skitch](https://evernote.com/intl/jp/skitch/)」を使えば、これらの問題が解決され、キャプチャから画像加工までが手軽になります**。

# インストール方法
公式ページ「[Skitch](https://evernote.com/intl/jp/skitch/)よりアプリをダウンロードし、[アプリケーション]フォルダに移動後、起動します。一度起動すると、それ以後はバックグラウンドで動作するようになるため、アプリは閉じて構いません。
なお、SkitchはmacOSのみ対応しています。

# 画面をキャプチャする
[shift][command][5]でSkitchによる画面キャプチャモードになります。選択範囲を指定して[キャプチャ]をクリックすれば、画面をキャプチャできます。ここまではmacOSの標準機能でもできます。

![](https://qiita-image-store.s3.amazonaws.com/0/67884/1376b654-bf28-b429-5b26-6017fe1a5a95.png)

# キャプチャした画像に矢印、図形、文字等を描き込む
Skitchでは、矢印、図形、文字等、キャプチャ時に描き込めると便利な要素を使用できます。キャプチャ後、わざわざ別のツールを起動するよりも便利です。

![](https://qiita-image-store.s3.amazonaws.com/0/67884/beedc3e9-dd12-9f95-4d88-e84d87215f37.png)

▲ webページをキャプチャし、説明文を書き込んでいる例

# 見せたくない部分にモザイクをかける
「キャプチャ内で、この部分は見せたくない」といった場合には、モザイクをかけることができます。

![image](https://qiita-image-store.s3.amazonaws.com/0/67884/bcc4c03e-6c1e-2b41-0d5f-5974a02582d6.png)

# トリミング・回転する
画像の横幅、縦幅が意図せず大きくなってしまった場合には、トリミング・回転が可能です。

![](https://qiita-image-store.s3.amazonaws.com/0/67884/bbba0a0a-5b8d-4694-29f4-45c43c187d4a.gif)

# クリップボードにコピーできる
[command][E]で画像をPNGとして書き出し可能ですが、編集後即座にSNSに投稿したい場合もあるでしょう。そのような場合には、[command][shift][C]でクリップボードにコピーし、SNSの投稿ウインドウに[command][V]で貼り付ければ、編集画像を即座にSNSに投稿できます。**1分1秒を争うタイムラインでは重要な機能です**。

![](https://qiita-image-store.s3.amazonaws.com/0/67884/90ea2649-1c74-241e-f53f-d0970175519d.gif)

▲ あとF1.4

# Skitchはインストールして損はないツール
画面キャプチャだけであればmacOSの標準機能で素早く可能ですが、強調したい部分を矩形で囲ったり、見せたくない部分を隠したりといった作業が手間です。Skicthを使えば手軽にできるので、筆者は**単なる画面キャプチャであれば標準機能、加工をしたい場合はSkicthというように併用しています**。

多くのユーザーが使っているため、見た目が似通ってしまうというデメリットはあるものの、操作の容易さ・キャプチャの手軽さでは他のツールよりも一歩進んでいる印象です。キャプチャ作業がかなり捗るので、入れておいて損はありません。是非試してみてください。

[Skitch | Evernote](https://evernote.com/intl/jp/skitch/)
homebrewで古いformulaを入れてみた

# 概要

自作のライブラリでffmpegのライブラリをつかって動作するのを書いているんですが
ffmpegの過去のバージョンで動作テストしたくなった。
というわけで古いバージョンのffmpegをbrew経由でいれる方法を調べてみた。

## こうすればできるみたい。

https://github.com/homebrew/homebrew-core
ここにいく。

過去のバージョンがほしいライブラリ update bottleで検索する。
![スクリーンショット 2017-04-30 16.23.24.png](https://qiita-image-store.s3.amazonaws.com/0/6246/882a3610-c915-f34f-9b1b-44afe4ca07e6.png)

Commitsへいくとこんな感じでBrewTestBotのコミットの一覧がでてくる。
![スクリーンショット 2017-04-30 16.24.16.png](https://qiita-image-store.s3.amazonaws.com/0/6246/46604e09-f026-617e-5a3a-a5426b072c25.png)

仮に3.1.5が欲しいとするとコミットの内容をみにいってffmpeg.rbのViewをクリックする。
![スクリーンショット 2017-04-30 16.25.54.png](https://qiita-image-store.s3.amazonaws.com/0/6246/e36d79c5-fcb4-1c37-b378-f64f80c75683.png)

ファイルの内容がでてきたらRawをクリックして生データへのアクセスを取得する。
![スクリーンショット 2017-04-30 16.26.45.png](https://qiita-image-store.s3.amazonaws.com/0/6246/7fc15ee5-80c6-497c-a966-bec440feb52b.png)

するとこのアドレスが得られる。
https://raw.githubusercontent.com/Homebrew/homebrew-core/e5178179247828dfe1bbba346ae6490b778a76fa/Formula/ffmpeg.rb

あとはコンソールで

```
$ brew unlink ffmpeg
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e5178179247828dfe1bbba346ae6490b778a76fa/Formula/ffmpeg.rb
```
とすれば、過去のバージョンのffmpegのインストールを実行することができるみたい。

インストールが完了したらbrew switchで入れ替えればOK

```
$ brew switch ffmpeg 3.1.5
Cleaning /usr/local/Cellar/ffmpeg/2.8
Cleaning /usr/local/Cellar/ffmpeg/2.8.6
Cleaning /usr/local/Cellar/ffmpeg/3.0.1
Cleaning /usr/local/Cellar/ffmpeg/3.0.2
Cleaning /usr/local/Cellar/ffmpeg/3.1.4
Cleaning /usr/local/Cellar/ffmpeg/3.1.5
Cleaning /usr/local/Cellar/ffmpeg/3.2.3
Cleaning /usr/local/Cellar/ffmpeg/3.2.4
Cleaning /usr/local/Cellar/ffmpeg/3.3
81 links created for /usr/local/Cellar/ffmpeg/3.1.5
```
Ruby の PyCall を使って pyenv な Python を使えるようにする方法

# 想定している環境

* Mac
* PyCall はインストール済み
* pyenv で Python をインストールしていて、PyCall からはこの Python を利用したい

# 遭遇した問題

こういう Ruby スクリプト[^1]を書いて、

```ruby:test.rb
require 'pycall/import'

puts "ok"
```

実行したら、

```bash
$ ruby test.rb
ImportError: No module named site
```

というエラーが出る。

# 解決方法

pyenv で Python をインストールするときに、共有ライブラリを作るようにオプションを指定する。

```bash
$ CONFIGURE_OPTS="--enable-shared" pyenv install 3.6.1
```

こうすると、`~/.pyenv/versions/3.6.1` 配下に libpython3.6m.dylib が生成される。[^2]

# 追跡

## site モジュールを探す

```bash
$ cd $(pyenv prefix)
$ find . -name site.py
./lib/python3.6/site-packages/jedi/evaluate/site.py
./lib/python3.6/site.py
```

site.py はある。
ということは、単にパスが通っていないのではないかと推測。

## PYTHONPATH を通してみる

```bash
PYTHONPATH=$HOME/.pyenv/versions/3.6.1/lib/python3.6 ruby test.rb
  File "/Users/cesare/.pyenv/versions/3.6.1/lib/python3.6/site.py", line 177
    file=sys.stderr)
        ^
SyntaxError: invalid syntax
```

モジュールは無事に見つかるようになったが、今度はシンタックスエラーが出た。
どうやら、このモジュールをロードした処理系が Python3.x 系のものではないのでは疑惑。

PyCall のソースを軽く眺めた感じ、FFI を使っているようなので、たぶん処理系は共有ライブラリではないかと予想した。

## 処理系の共有ライブラリを探す

Mac だと共有ライブラリの拡張子は .dylib であることが多いので、ひとまずこんな感じで探してみる。

```bash
$ find . -name '*.dylib'
./lib/python3.6/site-packages/matplotlib/.dylibs/libpng16.16.dylib
./lib/python3.6/site-packages/matplotlib/.dylibs/libz.1.2.10.dylib
./lib/python3.6/site-packages/scipy/.dylibs/libgcc_s.1.dylib
./lib/python3.6/site-packages/scipy/.dylibs/libgfortran.3.dylib
./lib/python3.6/site-packages/scipy/.dylibs/libquadmath.0.dylib
```

幾つか出てきたが、これらは後からインストールしたパッケージのものなので違う。
`.pyenv/versions/3.6.1/lib` 配下を覗いてみると libpython3.6m.a というファイルなら転がっているが、 .a は共有ライブラリではないし、探し物はこれではない。おそらく libpython3.6m.dylib というファイルが存在していないといけないのでは、と推測。

## pyenv で処理系の共有ライブラリが作られるようにする

Python の処理系のソースを取ってきて `configure` のオプションを調べると `--enable-shared` というものが指定できるらしいことが分かった。pyenv のインストール時に `configure` のオプションを指定するには、環境変数 `CONFIGURE_OPTS` を使えば良いらしい。

ということで、

```bash
$ CONFIGURE_OPTS="--enable-shared" pyenv install 3.6.1
```

こうすれば libpython3.6m.dylib が生成された。
テスト用の Ruby スクリプトを再実行してみると、

```bash
$ ruby test.rb
ok
```

無事動いた。

# 補足

## libpython の検索順序

PyCall が libpython を探す様子は、環境変数 `DEBUG_FIND_LIBPYTHON` を使うと観測できる。

```bash
$ DEBUG_FIND_LIBPYTHON=1 ruby -e 'require "pycall"'
```

というようにすれば、標準出力に検索したパスが列挙されるようになる。

------
[^1]: エラーの原因を探るために余計なものを削って最小限にしたらこのコードになった。標準出力に "ok" と出てこないので、`require 'pycall/import'` でコケていることが伺える。
[^2]: `--enable-shared` を指定していなかったときは .dylib は生成されておらず、同名の .a ファイルのみが置かれていた。
さくらクラウドのMastodnを更新(1.2.2 -> 1.3.2)

トラブルもなく大したことはないのですが、忘備録です。

##バージョン確認

[スクリプト動作詳細](http://cloud-news.sakura.ad.jp/startup-script/mastodon/information/)を参照して確認すると

```
* (detached from v1.2.2)
  master
```

##とりあえずサービス停止
```
# systemctl stop mastodon-sidekiq
# systemctl stop mastodon-streaming
# systemctl stop mastodon-web
```

##更新作業
[Mastodonのドキュメント](https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md)と[リリースノート](https://github.com/tootsuite/mastodon/releases/)を参照して

*[Mastodonのドキュメント](https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md)みると、わざわざサービス止めなくていい感じ!?

```
# su - mastodon
$ cd live
$ git fetch
$ git checkout $(git tag | tail -n 1)
```

```
$ RAILS_ENV=production bundle exec rails db:migrate
Could not find globalid-0.4.0 in any of the sources
Run `bundle install` to install missing gems.
```
足りないって言われたから指示通り入れる。

```
$ bundle install
```

[d6rkaiz](http://qiita.com/d6rkaiz)さんよりアドバイス貰いましたので追記です。

```
RAILS_ENV=production bundle exec rails assets:clobber
```
を行ってから、precompileした方が良い。
assetsの中をクリアしてからprecompileが良いみたい。
Ruby関係は無知なので、アドバイス有り難いです。

それから、リリースノートにしたがって precompileが必要なので行う。

```
$ yarn install --pure-lockfile
$ RAILS_ENV=production bundle exec rails assets:precompile
```

##サービス起動
```
# systemctl start mastodon-sidekiq
# systemctl start mastodon-streaming
# systemctl start mastodon-web
```

![1.jpg](https://qiita-image-store.s3.amazonaws.com/0/71525/ba185096-e4e7-6613-aeb6-22654d17f72f.jpeg)

OK:sunny:
Polymer App Toolbox(日本語) Using the Toolbox/App templates 〜アプリケーションのテンプレート〜

[目次へ移動](http://qiita.com/jtakgiuchi/items/e5160ba7d039ca5b05a4)

[翻訳ドキュメントの管理ページ](https://github.com/jtakiguchi/polymer-docs-japanese-translation)

Polymer App Toolboxの利用は、Polymer CLIを使い、ここで紹介される要素やパターンが組み込まれたテンプレートから一つを選んで始めることができます。

## テンプレートからプロジェクトを初期化

テンプレートからプロジェクトを初期化するには、[Polymer CLI](https://www.polymer-project.org/2.0/docs/tools/polymer-cli)がインストールされていることを確認し、空のプロジェクトフォルダに`cd`で移動し、次のコマンドを実行するだけです。そうすると現在利用可能なテンプレートから一つ選択するよう促されます。

~~~
    $ polymer init
~~~

## テンプレート

### Application

`application`テンプレートは、Polymerで構築されるアプリケーションの最も基本的な出発点です。アプリケーションのルート(root)として配信可能な必要最小限の実装を備えたカスタム要素が一つ用意されています。非常に高い柔軟性を持っており、そこから思うままにアプリケーションを構築していけます。

### Starter Kit


<img src="https://www.polymer-project.org/images/1.0/toolbox/starter-kit.png" width="480" alt="Starter Kitのイメージ図">

`starter-kit`は[app-layout](https://github.com/jtakiguchi/polymer-docs-japanese-translation
/blob/master/docs/app-toolbox/responsive-app-layout.md)要素を取り入れ、汎用的なレフトドロワーパネルとツールバーを備えています。テンプレートは、メインコンテンツエリアへ読み込み描画される複数のビュー間にナビゲーションを提供します。

テンプレートは、アプリケーションの効率的かつ進歩的な(progressive)ローディングのため[PRPLパターン](https://github.com/jtakiguchi/polymer-docs-japanese-translation
/blob/master/docs/app-toolbox/serve-your-app.md)を用いてセットアップされます。PRPLパターンでは、ビューは必要に応じて読み込まれ、オフライン環境やその後の利用に備えてプリキャッシュされます。

### Shopアプリケーションデモ

<img src="https://www.polymer-project.org/images/1.0/toolbox/shop-template-desktop.png" width="480" alt="Shopデモのイメージ図">

`shop`テンプレートは、`starter-kit`上に構築された本格的なアプリケーションで、PWA仕様の完全なECアプリケーションを構成する要素一式を実装しています。このテンプレートは、「home - list - detail」型の典型的なアプリケーションフローの見本であり、出発点となるイメージや必要な機能一式を備えたアプリケーションの雛形を提供します。

詳細については、[Shop case study](https://www.polymer-project.org/2.0/toolbox/case-study)を参照してください。

### Newsアプケーションデモ

<img src="https://www.polymer-project.org/images/1.0/toolbox/news-template-desktop.png" width="480" alt="Shopデモのイメージ図">

`news `テンプレートは、`starter-kit`上に構築された本格的なアプリケーションで、PWA仕様の完全なNewsアプリケーションを構成する要素一式を実装しています。このテンプレートは、ニュース記事のロードをデモンストレートし、出発点となるイメージや必要な機能一式を備えたアプリケーションの雛形を提供します。

実装の詳細については、[News case study](https://www.polymer-project.org/1.0/toolbox/news-case-study)を参照してください。Newsのテンプレートの使用方法やカスタマイズ方法については、[News documentation site](https://news-docs.polymer-project.org/)を参照してください。

## 次に進むところ

テンプレートは出発点であり、アプリケーションのニーズに合わせて、Polymer App Toolboxのドキュメント内で紹介されるWebコンポーネントに限らず、[WebComponents.org](https://www.webcomponents.org/)のような外部のソースからも自由にコンポーネントを追加することができます。

App Toolboxのテンプレートの利用を開始するためのチュートリアルは、[Building your first Polymer application](https://www.polymer-project.org/2.0/start/toolbox/set-up)を参照してください。
phpで配列と配列を比較する

phpで配列と配列を比較する時、２つの配列が同じであることを判定する場合は等価演算子が使えます。

```php
    $array1 = [
        'userId' => 1,
        'userName' => 'Yamada',
        'createDate' => 20170501101532,
    ];
    $array2 = [
        'userId' => '1',
        'userName' => 'Yamada',
        'createDate' => '20170501101532',
    ];

    var_dump($array1 == $array2);  // 型判定なし true
    var_dump($array1 === $array2); // 型判定あり false
```
Xcodeのプロジェクトに.gitignoreを追加する。

Xcodeに.gitignoreを追加するにあたり、初歩的なところで困ったので投稿

#1 .gitignoreを作成する
作成場所: Xcodeプロジェクトのディレクトリ直下 
ターミナルで移動し、下記のコマンドを実行
```$ touch .gitignore```

#2 Fiderで.始まりのファイルを見れるようにする
ターミナルで下記のコマンドを実行
```$ defaults write com.apple.finder AppleShowAllFiles true
$ killall Finder```

#3 .gitignoreを編集する
作成した.gitignoreをテキストエディタで開き、任意の内容を書き込む
自分は[github/gitignore](https://github.com/github/gitignore/blob/master/Swift.gitignore)の内容をコピペ

#4. すでにコミットしたファイルをgit管理対象外にする
自分は.gitignoreを作成する前に、gitの管理対象外にしたいファイルをコミットしていたため本手順を実施。一度すべてのファイルを管理対象外にする。
ターミナルでプロジェクトのディレクトリに移動し、下記のコマンドを実行
```git rm -r --cached .```
```git add .```


#5 ~~Xcodeから~~コミット
~~Xcodeのメニューから[Source Control] > [Commit...]
たぶんターミナルで実行しても良いと思う。.gitignoreが効いていることを確認しやすかったので自分はXcodeで実施~~

Xcodeからだと上手くコミットできていなかったため、コマンドで実行。コミット前にgit statusで変更ファイルを確認。
```git status
git commit -m "fix .gitignore"
```
Gitlab


## SSH
gitlabでパスワードを毎回聞かれる件

![Kobito.ob9iVM.png](https://qiita-image-store.s3.amazonaws.com/0/178824/eb81c7aa-eab6-c48f-2ec7-8e70876583fa.png "Kobito.ob9iVM.png")

```bash:bash
$ git remote set-url origin <②の値>
```

```bash:bash
$ ssh-keygen -t rsa -C <registered@email.address>
$ cd ~/.ssh
$ mv id_rsa gitlab_rsa
$ mv id_rsa.pub gitlab_rsa.pub
```

```vim:~/.ssh/config
Host gitlab.com↲                                                                
	HostName gitlab.com↲                                                          
	User git↲                                                                     
	Port 22↲                                                                      
	IdentityFile ~/.ssh/gitlab_rsa↲                                               
	TCPKeepAlive yes↲                                                             
	IdentitiesOnly yes↲         
```

![Kobito.9R7iHR.png](https://qiita-image-store.s3.amazonaws.com/0/178824/efba600c-e7b7-2b33-c230-05d573ad721e.png "Kobito.9R7iHR.png")
Neovimmerになりたい

### やったこと
まだvimを使い始めて2週間程ですが、早くもその魅力にとりつかれneovimを使いたくなってしまいました。
週末に時間があったのでneovimをdein.vimとともに導入してみました。これからneovimあるいはdein.vimを導入しようと考えている人の参考になれば幸いです。

#### 環境
mac os sierra 10.12.4
homebrew 1.1.13

### Neovim

#### Neovimって何？
neoはギリシア語で新しいを意味します。つまり読んで字のまま新しい　vimってことですね。
じゃあ何が新しいのかってところなんですが、NeovimではVimのソースコードのリファクタリングや、複数人で開発できる体制や仕組みにすること(これまではvimの開発者に負担が集中)、プラグイン開発をより加速させることなどを目指しているらしいです。

#### インストール
それではneovimをインストールしていきます。

```
 brew install neovim/neovim/neovim
```
必要なのはこれだけ。次は設定ファイルを書いていきますが、dotfileをまとめて管理しているので

```.bashrc
export XDG_CONFIG_HOME=~/dotfiles/.config
```
デフォルトとは違うディレクトリを指定。こうすることでdotfile内の.configファイルをneovim起動時に読み込んでくれるらしい。neovimの.vimrc(設定ファイル)にあたるinit.vimは```.config/nvim```配下に置くのがいいらしい。

#### init.vim
neovimの設定ファイルです。ここにneovimの設定を書いていきます。はじめはvim上級者の設定を真似するのがいいと思います。

### dein.vim

#### dein.vimって何？
vimのプラグインマネージャーです。要はこれを使えばプラグインを簡単に導入＆管理できますと。
他にもいくつかプラグインマネージャーはあるのですが、これからvimを始めるならdein.vimを使っておけば間違いないです。

#### インストール
公式の[README](https://github.com/Shougo/dein.vim)を参考に進めていきます。
まずは、dein.vimをインストールするディレクトリを決めないといけません。
```~/.vim/bundles```  ```~/.cache/dein``` ```~/.local/share/dein```
公式だとこのあたりがおすすめされていました。私は```~/.cache/dein```を選択。

```
$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
$ sh ./installer.sh { 自分で決めたディレクトリ }
```
２つ目のコマンドを実行したときに

```
if &compatible
  set nocompatible
endif
set runtimepath+={path to dein.vim directory}

if dein#load_state({path to plugin base path directory})
  call dein#begin({path to plugin base path directory})

  call dein#add({path to dein.vim directory})
  call dein#add('Shougo/neocomplete.vim')
  ...

  call dein#end()
  call dein#save_state()
endif

filetype plugin indent on
syntax enable
```
このようなコードが表示されると思います。こいつをinit.vimに貼り付けてあげます。
あとは追加したいプラグインを

```call dein#add(プラグイン名)```のように追記していきます。プラグインについては[こちら](http://post.simplie.jp/posts/56)のサイトなどを参考に。

そして```:call dein#install()```を実行すればプラグインがインストールされます。


### まとめ
導入は比較的簡単でした。vimとの違いは現時点では少し早くなったかな程度です。みなさんに幸せなvimライフが訪れることを願っています。
結構適当に書いたのでお粗末ですみません。
ちょっとずつ追記・修正します。では。
Polymer App Toolbox(日本語) What’s in the box 〜App Toolboxの概要〜

[目次へ移動](http://qiita.com/jtakgiuchi/items/e5160ba7d039ca5b05a4)

[翻訳ドキュメントの管理ページ](https://github.com/jtakiguchi/polymer-docs-japanese-translation)

Polymer App Toolboxは、Polymerを使用して[Progressive Web Apps(PWA)](https://developers.google.com/web/progressive-web-apps/)を構築するためのコンポーネントやツール、テンプレートのコレクションです。App Toolboxの機能は以下の通りです。：

 - PolymerとWebコンポーネントを利用したコンポーネント指向のアーキテクチャ
 - [\<app-layout>](https://www.webcomponents.org/element/PolymerElements/app-layout)コンポーネントを利用したレスポンシブルデザイン
 - [\<app-route>](https://www.webcomponents.org/element/PolymerElements/app-route)要素を使用したモジュラールーティング
 - [\<app-localize-behavior>](https://www.webcomponents.org/element/PolymerElements/app-localize-behavior)によるローカリゼーション
 - [\<app-storage>](https://www.webcomponents.org/element/PolymerElements/app-storage)要素によるローカルストレージの簡易なサポート
 - [Service Worker](https://developers.google.com/web/fundamentals/getting-started/primers/service-workers?hl=ja)を使った、オフラインキャッシュによる[Progressive Enhancement](https://en.wikipedia.org/wiki/Progressive_enhancement)
 - ビルドツールは複数のアプリケーション配信手段をサポートしており、サーバープッシュを使うHTTP/2向けにはunbundledファイルを配信し、HTTP/1向けにはbundledファイルを配信します。

これらコンポーネントのいずれか一つを個別に使用することも、それらを併用してフル機能のProgressive Web Apps(PWA)を構築することもできます。最も重要なのは、各コンポーネントが付加的(additive)であることです。シンプルなアプリであれば、`app-layout`だけで十分かもしれません。アプリが複雑化するにつれ、必要に応じてルーティング、オフラインキャッシュ、ハイパフォーマンスな配信方法を追加することができます。

> **ハイブリッド互換** Toolboxの要素と機能には、Polymer 1とPolymer 2の両方で利用可能なハイブリッド版が用意されています。2.0リリース候補(RC)を使う場合は、要素の`2.0-preview`ブランチを使用してください。

これらのコンポーネントの実際の動作を体感したい場合は、次のいずれかのデモアプリケーションを試してみてください。：

- [Shop](https://shop.polymer-project.org/)：Shopは、ツールボックスを使用して構築された、フル機能を備えたECのPWAデモです。ビルド方法は、[Case study: the Shop app](https://www.polymer-project.org/2.0/toolbox/case-study)を読んでください。

- [News](https://news.polymer-project.org/list/top_stories)：NewsはShopのようなフル機能のPWAのデモですが、コンテンツの配信に焦点を当てています。ビルド方法は、[Case study: the News app](https://www.polymer-project.org/1.0/toolbox/news-case-study)を読んでください。

App Toolboxの利用を開始するには、[App Toolboxでアプリを構築](https://www.polymer-project.org/2.0/start/toolbox/set-up)を参照してください。

または、[レスポンシブアプリのレイアウト](https://www.polymer-project.org/2.0/toolbox/app-layout)を読んでみてください。

[BUILD AN APP](https://www.polymer-project.org/2.0/start/toolbox/set-up)

[RESPONSIVE APP LAYOUT](https://www.polymer-project.org/2.0/toolbox/app-layout)
swiftで累乗、つまり何回も同じ数をかける、二乗三乗する方法が１０秒ググってもでてこないので、書きます（NSDemicalNumberを使う時）

swiftで累乗、つまり何回も同じ数をかける、二乗三乗する方法が１０秒ググってもでてこないので、書きます（NSDemicalNumberを使う時）

今から書きます
今から書きます


<h1>コメントで教えていただきました、以下の通り

下の方のコメントをご参照ください

両方、Double型にしたい場合、こんなんでいいですかね

```
print(pow(3.0, 4.0)) //=> "81.0\n"
```

pow("元になる数","累乗する回数の数（次数）")
これをprintする

そして、こんな感じで使おうと思います

```
var answer:Double = 2.0
var key:Double  = 5.0

print(pow(answer, key))
```

playgroundなどで書くと、きちんと表示されますね

型に関してはまだちょっと僕わかってないかもしれません（すいません
でもとりあえずわかりました（謎）
by コピペプログラマー

以下の試行錯誤中の駄文は読まないほうがいいです
（自分のために一応残してあります）

---

<h1>なんでそんなこと知りたいの？

で、、電卓を作っているからです（恥）


<h1>Powとか何とか?

Powっていう関数でいいの？？
あーやばい、はやく教えろよ

なんなん？
書いとけよ




http://stackoverflow.com/questions/24065801/exponentiation-operator-in-swift

stackoverflowより



There isn't an operator but you can use the pow function like this:

```
return pow(num, power)
If you want to, you could also make an operator call the pow function like this:

infix operator ** { associativity left precedence 170 }

func ** (num: Double, power: Double) -> Double{
    return pow(num, power)
}

2.0**2.0 //4.0
```

んん？
（※これはC言語の方ですよね、そうですよね）
ってか関数ってなに（爆）宣言いるの？


<h1>関数？？？？？関数って宣言しないと使えないの？？？？ん？？
え？
ん？？？？


その辺をきちんと書いてくれよ
特殊な関数は、用意されていて、よびだせる系だけど
召喚呪文唱えて、フィールドに配置してからじゃないと、技使えないの？？


え？？？？は？？？
いつ俺のターンが来るんだよ
ずっと俺のターンだろ


１０秒しかねええええんだよ

ちんたらやってんじゃねえーよ
わかりやすく書けよ

（※筆者はGoogle先生に聞いて、１０秒でわからないと、困惑しはじめる、ゆとり世代以下の脳の持ち主です）



<h1>Swiftだけは関数定義しなきゃダメなの？

https://hydrocul.github.io/wiki/programming_languages_diff/number/pow.html
こちらのページに

各種言語での
累乗表現あるけど

他はこんな簡単なのに

Swiftは関数定義しなきゃダメなの？？？
ん？？？？
どっち？
書いとけよ


あと３秒しかない

ああああ
ああああああああ

はやく

<h1>NSDecimalNumberを使っている場合は、そもそも累乗の書き方が違う、というか足し算ですら違う

あ、そうか、、、

今回、NSDecimalNumberという型を使っています
NSDecimalNumber
別名、では
Binary
Coded
Demical 
Number
でBCDと呼ばれるらしいです


＜NSDecimalNumberを使うメリット＞
いろんな型に対応していて万能なので
その都度、形を変えて出すことができる

＜NSDecimalNumberを使うデメリット＞
うやって特殊な捉え方をしている関係上、
演算もBCD専用の書き方で行う必要がある

<h1>「NSDecimalNumber　累乗」で検索

「NSDecimalNumber　累乗」で検索すればいい、というのがわかってきました

これでググって、先頭１０ページくらいを３秒で眺めると。。。


http://cocoaapi.hatenablog.com/entry/00130604/Foundation_NSDecimalNumber_decimalNumberByRaisingToPower_

こちらのサイトに書いてありました

```
func decimalNumberByRaisingToPower(_ power: Int) -> NSDecimalNumber
```
```
dNum = [dNum1 decimalNumberByRaisingToPower:2];
```

という感じということですが…
（http://cocoaapi.hatenablog.comより引用）

NSDecimalNumberを使う場合、マジで式の書き方、複雑っすね

ひえーーー
RS232C をUARTに変換し、Arduino で送受


##RS232C をUARTに変換し、Arduino で送受信

Arduinoでプログラムを書くときArduinoのシリアル出力をPCでデバックしたい、といったことがたまにあります。ArduinoのUARTとPCのRS232C（実際にはUSB<->RS232C変換）ポートにつないでArduinoのデバックモニタを実現したいと思います。RS232CとUARTは信号の信号電圧が違っています。RS232Cは±12V、UARTは+5Vですね。秋月通商で購入した「３Ｖ・３．３Ｖ・５Ｖ系－ＲＳ２３２レベル変換基板」を使って、電圧変換をします。

http://akizukidenshi.com/catalog/g/gK-06464/
http://akizukidenshi.com/download/ds/akizuki/AE-ADM3202_manual.pdf

- USB-CVRS9を使って、USBをRS232Cに変換する。  
https://www.sanwa.co.jp/product/syohin.asp?code=usb-cvrs9
- RS-232Cの出力をADM3202でUARTに変換
- UART をArduinoで受信
- Arduino で同じデータをUARTで送信
- UARTをADM3202でRS232Cに変換
- PCでUSBを介してRS232Cを受信

という実験を行いました。

![IMG_2809.jpg](https://qiita-image-store.s3.amazonaws.com/0/58417/36af580f-674d-8f7f-087e-c68d30646107.jpeg)


RS232Cレベル変換基板（ADM3202）はコネクタに直接半田づけをします。ADM3202のジャンパ、JP1はArduinoの電源をはんだでショートをしました。

![IMG_2807.JPG](https://qiita-image-store.s3.amazonaws.com/0/58417/24a1cb9f-e621-5333-425d-3e077e3e13fa.jpeg)

ADM3202とArduinoの接続は次の図の通りです。
![IMG_2810.jpg](https://qiita-image-store.s3.amazonaws.com/0/58417/d3007e06-83ab-103c-1d83-9a59128b0e4e.jpeg)

ArduinoのプログラムはSerialを受けて、Serialを出力します。

```

void setup() {
    Serial.begin(230400);
}

uint8_t incomingByte;

void loop()
{
    if (Serial.available() > 0) {     // 受信したデータが存在する
        incomingByte = Serial.read(); // 受信データを読み込む
        Serial.write(incomingByte);   // データを出力する
    }
}
```

Arduino のシリアル入出力のボーレートをいろいろ試してみました。9,600bps から921,600bpsまで試してみましたが、**230,400bps**が安定してデータを送受信できる最大値でした。
DataStoreのQueryで*datastore.keyでFilter出来なくて焦った話

超絶初心者


```
q := datastore.NewQuery("Score").Filter("OwnerKey =", ownerKey).Order("-created_at").Limit(20)
```
とかやろうとして、0件しか返ってこない。焦ったけど、`Filter("OwnerKey =", ownerKey)`が悪かった。

```
type Score struct {
	Identifier   string         `datastore:"-" goon:"id" form:"media_id" json:"identifier"`
	OwnerKey     *datastore.Key `datastore:"owner_key" goon:"owner_key" json:"-"`
}
```

こんな感じで構造書いてたんだけど、Filterに使うのは当然`エンティティのカラム名`なので、`owner_key`を使わないとだめ。
`Filter("owner_key =", ownerKey)`で動いた。

*datastore.keyでFilterできねえのか…！？って一瞬思ったけどそんなことなかった。
【Vim】Beep音を消す方法

いちいちBeep音が鳴って鬱陶しいため、鳴らないように設定する。

設定ファイル修正
`$ echo 'set vb t_vb=' >> ~/.vimrc`


##2017/04/30追記
バージョン 7.4.793 以降の場合、以下を設定する方法もあるそうです。
（残念ながら、自分の環境では、バージョンの問題で設定できませんでした。。。）
`set belloff=all`

参考
[Vim Magazine 2016 年 7 月号](http://vim-jp.org/vimmagazine/2015/07/31/vimmagazine.html#今月の新機能)
[Vim日本語ドキュメント](http://vim-jp.org/vimdoc-ja/options.html#'belloff')
サンフランシスコの治安情報

こういった情報を渡す事がけっこうあるのでまとめ。
随時更新。

- 周囲に常に注意し、歩きスマホなどはしないように。。。

# データ
- https://www.trulia.com/real_estate/San_Francisco-California/crime/

# 過去の体験談

- 夜10:30, Market street & 6th street
  - https://blog.catatsuy.org/a/25- 
- 夜9:30?, Market street & 3rd street付近?
  - http://tomoima525.hatenablog.com/entry/2016/08/30/164828

# ニュース

- ポケモンGO中に強盗
  - http://gigazine.net/news/20160920-pokemon-go-assaulted/
- イギリス人観光客の刺殺事件
  - http://www.independent.co.uk/news/world/americas/british-tourist-stabbed-killed-san-francisco-robbery-mugging-a6954161.html
Firebase CI w/ Gitlab.com



![Kobito.b4H7Zs.png](https://qiita-image-store.s3.amazonaws.com/0/178824/cae6083f-3355-076b-b7d6-146d2b1a72cd.png "Kobito.b4H7Zs.png")

-------

![Kobito.CtyqiY.png](https://qiita-image-store.s3.amazonaws.com/0/178824/4e3943ff-796e-1c7a-78d6-3501dc533d53.png "Kobito.CtyqiY.png")


-------

```yml:.gitlab-ci.yml
image: node:latest

cache:
  paths:
    - node_modules/
#    - app/bower_components # comment out if you have bower.json

# deploy_production:
#  stage: deploy
#  environment: Production
deploy_staging:
  stage: deploy
  environment: staging

  only:
    - master
  script:
    - npm install -g firebase-tools
#   - npm install -g bower # comment out if you have bower.json
#    - npm install # comment out if you have package.json
#    - bower install --allow-root # comment out if you have bower.json
    - firebase use $CI_PROJECT_NAME

    - firebase deploy -m "Pipeline $CI_PIPELINE_ID, build $CI_BUILD_ID" --non-interactive --token $FIREBASE_TOKEN
Yarnのキャッシュフォルダを移動して、PC本体のディスク容量を節約する方法

記事「[npmから乗り換えてわかったYarnの4つのメリット](http://qiita.com/tonkotsuboy_com/items/0242928ab32794d11f76)」でも紹介しましたが、[Yarn](https://yarnpkg.com/lang/en/)の特徴の一つはキャッシュを用いた高速なモジュールのインストールです。

それでは、Yarnのキャッシュはどこに保存されるのでしょうか？　 下記コマンドで確認できます。

```bash:Yarnのキャッシュフォルダの確認
yarn cache dir
```

筆者の場合は、`/Users/(ユーザー名)/Library/Caches/Yarn/v1`に格納されていました。容量は300MBと、決して小さくはないサイズです。

**HDD・SSD容量の少ないPCを使っていたり、できるだけPCの保存領域を使用したくない場合、このキャッシュフォルダを外部記憶領域に移動したいケースもあるでしょう**。筆者はiMacのSSD(512GB) + 外付けSSD（512GB）という構成ですが、Yarnのキャッシュフォルダを外付けSSDに移動して本体側の容量を節約したいと思いました。

こういった場合には、次のコマンドを使ってYarnのキャッシュフォルダを移動します。

```コマンド:Yarnのキャッシュフォルダ移動コマンド
yarn config set cache-folder (移動したいフォルダ)
```

次回の`yarn add (パッケージ)`より、キャッシュフォルダが変わります。

![](https://qiita-image-store.s3.amazonaws.com/0/67884/4ade5814-500c-3b8b-39db-2f81de46f156.png)

よきYarnライフを。

参考記事：[yarn cache | Yarn](https://yarnpkg.com/lang/en/docs/cli/cache/)
ESP32をOSXで開発するたのの設定

たぶんAnaconda入っていたからだと思いますが、詰まったので書いておきます。

基本的には、[ESP-IDF Programming Guide](http://esp-idf.readthedocs.io/en/latest/eclipse-setup.html#setting-up-eclipse) を参照していますが、ところどころPATHがあわなかったり、Eclipseの画面表示が変わったりしているので。

## Python 2 を(3と併存させて）インストール

実は、一回ESP-IDFの指示に従って進めていき、hello_worldをmakeしようとしたら、下記のようなエラーが出てしまいました。

```
Kosuke-no-MacBook:hello_world kocko$ make
（中略）
TypeError: unorderable types: PartitionDefinition() < PartitionDefinition()
make: *** [/Users/kocko/esp/esp-idf/examples/get-started/hello_world/build/partitions_singleapp.bin] Error 1
```
ググったところ、[githubでissue](https://github.com/espressif/esp-idf-template/issues/3) を発見。私は、anacondaでPython3を使っているのですが、どうやら、Python3には未対応のようでした。

>I get this error if I run the gen_esp32part.py tool in Python 3. At the moment, esp-idf's Python-based tools only support Python 2 (Python 2+3 support is coming but it's not available now.)

ということで、さらにググって、[osx \- How to install 2 Anacondas \(Python 2\.7 and 3\.4\) on Mac OS 10\.9 \- Stack Overflow](http://stackoverflow.com/questions/24405561/how-to-install-2-anacondas-python-2-7-and-3-4-on-mac-os-10-9)を参考に、anaconda3と2を共存してインストールします。
といっても、手順はたったの2行。

```
> conda create -n python2 python=2.7 anaconda
> source activate python2
```
2行目のsourceコマンドはコンソールを開くたびに叩く必要があるので注意です。こんな感じで、コンソールに入力すると、頭に(Python2)がつくようになるので便利です。

```
Last login: Fri Apr 28 20:34:51 on ttys002
Kosuke-no-MacBook:~ kocko$ source activate python2
(python2) Kosuke-no-MacBook:~ kocko$ which python
/Users/kocko/anaconda3/envs/python2/bin/python
(python2) Kosuke-no-MacBook:~ kocko$ 
```

## ESP-IDFをインストールする
ガイドに従って淡々と。anacondaのpythonは自分のホームディレクトリにあるので、sudoはいらないようです。

```
(python2)$ easy_install pip
(python2)$ pip install pyserial
(python2)$ mkdir -p ~/esp
(python2)$ cd ~/esp
(python2)$ tar -xzf ~/Downloads/xtensa-esp32-elf-osx-1.22.0-61-gab8375a-5.2.0.tar.gz
(python2)$ export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin
(python2)$ export IDF_PATH=/Users/＜ユーザ名＞/esp/esp-idf
(python2)$ git clone --recursive https://github.com/espressif/esp-idf.git
```

最後のexport　2つは、必要に応じて .bash_profileか何かに追記しておきます。

次にhello worldサンプルを動かしてみます。

```
(python2)$ cd esp-idf/examples/get-started/hello_world
(python2)$ make menuconfig
```
すると、こんな画面が出てきます。
<img width="682" alt="スクリーンショット 2017-04-30 14.21.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/135431/929e4aba-f472-0224-1cfd-e544cf9f63d4.png">

矢印の上下で、上のメニューが動き、矢印の左右で、下のメニューが動きます。
↓↓↓ で、Serial flasher configを選択して　Enterを押します。
<img width="682" alt="スクリーンショット 2017-04-30 14.22.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/135431/0bc390de-4851-5bf1-fbf3-28282db46df2.png">
もう一回Enterを押して、シリアルポートの設定をします。
<img width="682" alt="スクリーンショット 2017-04-30 14.23.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/135431/2c446605-e4df-f7df-2e57-56898a3096bd.png">
私と同じく、秋月の[ＥＳＰ３２－ＤｅｖＫｉｔＣ　ＥＳＰ－ＷＲＯＯＭ－３２開発ボード](http://akizukidenshi.com/catalog/g/gM-11819/)を買った方であれば、 ```/dev/cu.SLAB_USBtoUART``` で大丈夫だと思います。
Enterで抜けて、→で<Exit>を選択してEnter、もう一回→で<Exit>を選択してEnterしてコンソール画面に戻ります。

```
make && make flash
```
これで、うまくいくはずなのですが、なぜかArduinoのシリアルモニタで何も見えないので、とりあえず一旦ここまででスタジオにお返しします。現場からは以上です。
systemdでforeverを起動しようとしてハマったときのメモ（Ubuntu 16.04）

systemdに慣れていないためにハマったのでメモしておく。

#結論
>systemdのUnitファイルでtypeがsimple（デフォルト）になっている場合、
>ExecStartのコマンドはforkしてはいけない。

#経緯
Node.js製Wiki Crowiを、foreverでデーモン化し、
/etc/init.dに起動スクリプトを置いて管理していた状況から、
Ubuntu 16.04へのアップグレードする際に
systemdのUnitファイルを作成して管理する方法に変更。
その後、Crowiが起動しなくなった。

#対処
Type=forkingに変更する

```ini:変更前
Type = simple
```

```ini:変更後
Type = forking
```
または、forkしないコマンドに変更。

```ini:変更前
ExecStart = forever start app.js
```

```ini:変更後
ExecStart = node app.js
```
RedShiftの料金体系・費用

データウェアハウスに関する基本的な内容をまとめてみたものです。データウェアハウスに関する、Web上にすでにある解説コンテンツをまとめたサイトの抜粋です。
[Redshiftの料金体系・費用] (https://www.techcrowd.jp/redshift/price/)

# [Amazon Redshiftの料金体系] (https://www.techcrowd.jp/redshift/price/)

Amazon Redshiftの料金には、使った容量の料金を支払うオンデマンドと割引が受けられるリザーブドインスタンスがあります。

・料金は圧縮されたデータに基づいて計算されますが、通常は3倍程度の圧縮が可能です
・料金にはクラスターノードへのコピーと、Amazon S3 へのコピーも含まれます


# [オンデマンド料金とリザーブドインスタンスの料金] (https://www.techcrowd.jp/redshift/price/)

・オンデマンド料金
クラスターのノードのタイプと数に応じた1 時間当たりの料金を支払うのがオンデマンド料金です。
最低料金・前払い料金は不要なので、事前に必要となる容量を見積もる必要がありません。
開発やテストの時に使って、不要になった時に解体することもできます。

・リザーブドインスタンスの料金
オンデマンド料金よりも大きな割引を受けることができるので、本稼動に最適な料金体系です。
リザーブドインスタンスの料金は、前払いなし・一部前払い・全前払いは三種類から選べます。

前払いなし
前払いをせずに一年間時間単位の料金を支払うもので、オンデマンドよりも20％の割引となっています。

一部前払い
リザーブドインスタンスの料金の一部を前払いして、残りを1年または3年で支払います。
残額を1年で支払う場合はオンデマンドよりも最大41％の割引、残額を3年で支払う場合は最大73％の割引となります。

全前払い
1年または3年のリザーブドインスタンス料金を、一括で前払いするものです。
オンデマンドと比較すると1年は最大42％、3年は最大75％の割引となります。

リザーブドインスタンスを購入すると実行しているクラスターがなくても、前払い料金や時間単位料金が発生します。


# [他のデータウェアハウスとの費用の比較] (https://www.techcrowd.jp/redshift/price/)

データウェアハウスは通常のデータベースと用途が異なるために、特殊なハードウェを使用するので、数千万円以上の価格になることがほとんどです。
低コストで利用できる技術が開発されても、年間のテラバイト単価は100万ドルとなっています。

しかし、AmazonのRedshiftは、テラバイト単価が最低年間1,000ドルで利用可能です。
さらに、一般的なデータウェアハウスの場合は、システムを管理する技術者も必要になりますが、AmazonのRedshiftはクラウド上のシステムであるので管理コストも含まれている点に注目して下さい。
このようにAmazonのRedshiftが低価格で利用できるのは、クラウドで提供されるデータウェアハウスであるためです。


# [パフォーマンス・運用も含めてのリアルな費用対効果] (https://www.techcrowd.jp/redshift/price/)

料金体系だけでなく、実際に運用するにあたって、どの程度費用対効果が高いかについては、パフォーマンスや運用の手間などもかかわってきますが、AWSのスタッフによる説明だけでなく、第三者評価もしてもらった結果をプレゼントしている、下記の動画は参考になるいい情報源ではないかと思います。

[【上級者向け】Amazon Redshiftが切り開くクラウド・データウェアハウス（AWS Summit Tokyo 2013 | Tech-05）](https://www.youtube.com/watch?v=vEzNsSsN7hY)
RedShiftのパフォーマンス・速度 

データウェアハウスに関する基本的な内容をまとめてみたものです。データウェアハウスに関する、Web上にすでにある解説コンテンツをまとめたサイトの抜粋です。
[RedShiftのパフォーマンス・速度]  (https://www.techcrowd.jp/redshift/performance/)

# [RedShiftと他のデータベースとの性能の比較] (https://www.techcrowd.jp/redshift/performance/)

RedShiftの処理速度とパフォーマンスについては、オープンソース型フレームワークHadoopで管理されるAmazon Elastic MapReduceと比較することで明確になります。
Amazon Elastic MapReduceもビッグデータを高速で処理するAmazonのWEBサービスです。

100GB～50TBのデータ処理で比較すると、RedShiftはElastic MapReduceの10分の1の時間で処理できることが分かります。
処理速度が速いことはコストの低減することにつながりますので、運用コストもRedShiftの方が大幅に少なくて済むために、パフォーマンスについてもRedShiftが優れています。


# [RedShiftはどのような用途で速いのか？] (https://www.techcrowd.jp/redshift/performance/)

RedShiftはカラム型データベースであるために、合計や平均などを計算する集計処理の速度が速いのが特徴です。
大規模なデータの集計処理になると、他のデータベースよりも圧倒的なパフォーマンスを発揮します。

しかし、大量のデータのインポートや更新などの処理については苦手なので、頻繁にデータの内容を更新すると、RedShiftのパフォーマンスは低下してしまいます。


# [どのようにチューニングすると速度向上効果が大きいのか] (https://www.techcrowd.jp/redshift/performance/)

Redshiftを高速化するためのチューニング方法として、ソートキー・DISTKEY・圧縮があります。

・ソートキーによる高速化
Redshiftではテーブルを作成する時に、複数の列に対してソートキーを設定することが可能です。
ソートキーが定義されていると、テーブルにデータがロードされる際にソートキー順にデータが並べられます
Redshiftでは列データを1MB単位で扱いますので、ソートキーを使って効果的にデータを格納すると、検索にかかる時間を大幅に削減することが可能です。

・DISTKEYによる高速化
Redshiftはテーブルのデータを複数のノードに分散して格納しますが、偏ってデータを格納してしまうと処理速度が落ちてしまいます。
そのため、DISTKEYを使って、ノードへの分散方法を指定することが有効です。

・圧縮による高速化
テーブルにデータを格納する時に、データのサイズを小さくするのが圧縮です。
圧縮することで処理するデータ量を少なくすることができますので、処理速度を上げることができます。
Redshiftには複数の圧縮方法が用意されていますが、COPYコマンドを使うとRedshiftが最適な方法を選んで圧縮してくれます。
Redshiftのデータ可視化

データウェアハウスに関する基本的な内容をまとめてみたものです。データウェアハウスに関する、Web上にすでにある解説コンテンツをまとめたサイトの抜粋です。
[Redshiftのデータ可視化] (https://www.techcrowd.jp/redshift/visualization/)

# [Amazon Redshiftへのデータ投入] (https://www.techcrowd.jp/redshift/visualization/)

RedShiftにデータを投入するには、

・データのフォーマットを整える
・Amazon Redshiftにスキーマやテーブルを作成する

といった準備をしてから、Amazon S3からCOPYコマンドを使ってデータを投入します。
データを可視化するBIツールのことも考えて、テーブルやデータの内容を整える必要があります。


# [SQLによるバッチ処理] (https://www.techcrowd.jp/redshift/visualization/)

データを取り込むだけでは、十分にデータを活用できませんので、データの内容を理解して適切にデータを関連付けなくてはなりません。
そのため、効率的にRedshiftが使えるようにSQLによるバッチ処理で、必要なデータを用意し不要なデータの削除を行います。

Amaozn RedshiftはPostgreSQL準拠のアーキテクチャを採用しているために、INSERT・DELETE・UPDATEなどのSQLが使用できますが、テーブルをクリーンアップするためにVACUUMコマンドを実行する必要があります。
ただし、Redshift のVACUUMコマンドの使い方については、PostgreSQLでのVACUUM使用方法と異なりますので注意しなくてはなりません。


# [BIツールを使ってデータを可視化する] (https://www.techcrowd.jp/redshift/visualization/)

データへのアクセスが可能になりましたら、データを可視化するためにBIツール（ビジネスインテリジェンスツール）のインストールを行います。
BIツールは大規模なデータを分析するのに使用するツールで、企業の経営に役立つツールです。

Amazon Redshiftで使用するBIツールは、パートナー企業が使いやすいツールを提供しています。
Redshiftのパートナー企業は扱うBIツールの種類によって、
・データ統合パートナー
・ビジネスインテリジェンスパートナー
・コンサルティングパートナー
・クエリおよびデータモデル化パートナー
に分類されます。
数多くのBIツールがありますので、用途に応じたツールを選んで使うことが可能です。

適切なBIツールをインストールしてRedshiftに接続すると、データの内容が表やグラフとして表示されます。