OmniAICreator/Qiita-1.07M huggingface dataset:
MySQL — Error When Subquery Is Not AS | Every derived table must have its own alias

# problem 

For example, if you write a subquery like this, you get angry.

     SELECT * FROM ( SELECT User from user ); 

     => ERROR 1248 (42000): Every derived table must have its own alias 

# Solution 

Give some table name (alias name) in AS.

     SELECT * FROM ( SELECT User from user ) AS account; 

     +-----------+ | User | +-----------+ | mysql.sys | | root | +-----------+ 

# the reason 

If you do not write AS, SQL is interpreted syntactically like "FROM (without table name)".

# environment 

- mysql Ver 14.14 Distrib 5.7.12, for osx 10.11 (x86\_64) using EditLine wrapper 


# Original by
[MySQL — サブクエリに AS を付けないとエラーを起こす | Every derived table must have its own alias](https://qiita.com/Yinaura/items/562079d937021f1fc30a)

# About

[About this translattion](https://qiita.com/YumaInaura/items/7f6fd1e9310a6816469a)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Macbook | Exhaustion does not stop even though CPU usage is low

# problem 

It does not stop even if it restarts. Exhausted for about 3 hours. A room with good cooling.

I also tried removing the USB type, but no good.

# Solution 

**I closed the lid and opened it.**

Please try it if you can not do anything else.

# environment 

- MacBook Air (13-inch, Early 2015) 
- OSX El Capitan 10.11.14 


# Original by
[Macbook | CPU使用率が低いのに排気が止まらない](https://qiita.com/Yinaura/items/e7030d9b8d3c79f3050a)

# About

[About this translattion](https://qiita.com/YumaInaura/items/7f6fd1e9310a6816469a)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Rails4 | Model.select (Scroll columns on SQL queries)

# .select 

For example, if you write Only id columns can be obtained as internally issued SQL.

     User.select(:id) 

Let's check it in practice. ( _`users`_ the part of _`users` . `id`_ )

     User.select(:id).to_sql # => "SELECT `users`.`id` FROM `users`" 

Of course, in this case, "unspecified columns" can not be obtained on the object. Even if you get only id, you can't use name to send it out. k.

     User.select(:id).first.name # => NoMethodError: undefined method `name' 

# Use 

There is a huge amount of data in one column. Use it when eating memory.

(There is also a story that you can get only the columns you need at any time.)

# Rails 3 or earlier 

The way to write is old in Rails3. The following syntax is obsolete in Rails 4.

     User.all(:select => 'id') 

# reference 

- [Model--Rails documentation](http://railsdoc.com/model) 

# environment 

- Rails 4.2.6 


# Original by
[Rails4 | Model.select ( SQLクエリ上でカラムを絞る )](https://qiita.com/Yinaura/items/0af704982f688c948724)

# About

[About this translattion](https://qiita.com/YumaInaura/items/7f6fd1e9310a6816469a)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
SQL | AS works even if it is not

The following are both the same.

## A world with AS 

     SELECT 'Alice' AS alice, 'Bob' AS bob ; 

## A world without AS 

     SELECT 'Alice' alice, 'Bob' bob ; 

## result 

     +-------+-----+ | alice | bob | +-------+-----+ | Alice | Bob | +-------+-----+ 

# environment 

- mysql Ver 14.14 Distrib 5.7.12, for osx 10.11 (x86\_64) using EditLine wrapper 


# Original by
[SQL | AS は実はなくても動く](https://qiita.com/Yinaura/items/02daef9f6ec0afb06cbf)

# About

[About this translattion](https://qiita.com/YumaInaura/items/7f6fd1e9310a6816469a)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Rspec | Make a mock against hash

`:[]` Create a mock against `:[]` .

## Example 

     describe 'Mock Hash Test' do let(:hash) { { a: 1, b: 2, c: 3} } before do allow(hash).to receive(:[]).with(:a).and_return('Over written!') end it { expect(hash[:a]).to eq 'Over written!' } end 

## result 

     Mock Hash Test should eq "Over written!" 1 examples, 0 failures 

# problem 

However, in this way, the verification against `b:` and `c:` that are not mocking is angry. `and_call_original` problem is solved by using `and_call_original` .

## Example 

     describe 'Mock Hash Test' do let(:hash) { { a: 1, b: 2, c: 3} } before do allow(hash).to receive(:[]).and_call_original allow(hash).to receive(:[]).with(:a).and_return('Over written!') end it { expect(hash[:a]).to eq 'Over written!' } it { expect(hash[:b]).to eq 2 } it { expect(hash[:c]).to eq 3 } end 

## result 

     Mock Hash Test should eq "Over written!" should eq 3 should eq 2 3 examples, 0 failures 

## Supplement 

In this case, "Make later" has higher priority for mocks. So `and_return` you reverse the lines of `and_return` and `and_call_original` , the verification will fail.

# reference 

- [How to stub ENV with Rspec](http://qiita.com/vivid_muimui/items/5e0bc229a688afefbce2) 

# environment 

- rspec (3.4.0) 
  - rspec-core (3.4.4) 
  - rspec-mocks (3.4.1) 
  - rspec-rails (3.4.2) 


# Original by
[Rspec | ハッシュに対してのモックを作る](https://qiita.com/Yinaura/items/c917a5ad68e70f2d3079)

# About

[About this translattion](https://qiita.com/YumaInaura/items/7f6fd1e9310a6816469a)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Mac | I can not select keyword suggestions even if I use Tab key in &quot;Google Japanese input&quot;

It seems that it can not be helped depending on the application. Let's use the "down key".

> _You can not select a suggestion on Mac OS X by pressing the TAB key._
> 
> Some Mac OS X applications may not have the ability to select a suggestion from the TAB key. This is a problem caused by a conflict between the shortcut assigned by the application to the TAB key and the key assigned by Google Japanese input to the suggestion. Use the cursor down key to select the suggestion. Note that iTunes and Adium are currently known to fall under this issue.

https://support.google.com/ime/japanese/answer/2796482?hl=en

# environment 

- Google Japanese input 2.17 
- Mac OS El Capitan 10.11.4 


# Original by
[Mac | 「Google日本語入力」 で Tab キーを使ってもキーワード候補が選べない](https://qiita.com/Yinaura/items/021435ddf2c25e8d5cac)

# About

[About this translattion](https://qiita.com/YumaInaura/items/7f6fd1e9310a6816469a)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Mac | can not use date-date &#39;1 day ago&#39; on console

# Solution 

The Mac does not contain the GNU version of the command. I'll put it in brew.

     $ brew install coreutils 

gdate will be available.

     $ gdate --date '1 day ago' Sun May 1 12:44:19 JST 2016 

# problem 

The options available on Linux were not available on the Mac.

     $ date -d '1 day ago' [master] usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format] 

# reference 

- [Use GNU version of command on Mac (homebrew)](http://www.shigemk2.com/entry/20120416/1334578046) 


# Original by
[Mac | コンソールで date --date '1 day ago'  が使えない](https://qiita.com/Yinaura/items/7a95a47edd80bd4e1098)

# About

[About this translattion](https://qiita.com/YumaInaura/items/7f6fd1e9310a6816469a)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Rails | Convert all hash keys from symbol to string (stringify_keys / deep_stringify_keys)

As the title.

     { a: 1, b: 2, c: 3 }.stringify_keys # => {"a"=>1, "b"=>2, "c"=>3} 

# When the hierarchy of hash is deep 

`deep_stringify_keys` it is `deep_stringify_keys` , it will change to all symbols regardless of the hierarchy. (Rails 4)

     { a: 1, b: 2, c: { d: 3 } }.deep_stringify_keys # => {"a"=>1, "b"=>2, "c"=>{"d"=>3}} 

## Wow deep _stringify_ keys 

`deep_stringify_keys` , for example, even if there is an array in the middle, it does not matter.

     { a:1, b: 2, c: [{ d: [ { e:3 }] } ] }.deep_stringify_keys # => {"a"=>1, "b"=>2, "c"=>[{"d"=>[{"e"=>3}]}]} 

# Supplement 

- There is also a destructive method. ( `stringify_keys!` / `deep_stringify_keys!` ) 
- stringify instead of stringfy. Be careful with typos. 
- I posted it because I didn't hit it with "Rails / All / Symbols / Strings". 

# environment 

- Rails 4.2.6 


# Original by
[Rails | ハッシュのキーを全てシンボルから文字列に変える ( stringify_keys / deep_stringify_keys  )](https://qiita.com/Yinaura/items/4d999e0ee6b450f25ae7)

# About

[About this translattion](https://qiita.com/YumaInaura/items/7f6fd1e9310a6816469a)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Ruby | Omit the split argument

If omitted

     split(/\s/).reject(&:empty?) 

It seems to be similar to the time of writing.

# Verification 

Treats spaces as delimiters.

     "ABCD E".split # => ["A", "B", "C", "D", "E"] 

Line breaks are also treated as delimiters. Even if the delimiters are mixed and continuous, they will be handled nicely.

     " A\nB\r C \r\nD E ".split # => => ["A", "B", "C", "D", "E"] 

# reference 

- [split (String) | Ruby reference](http://ref.xaio.jp/ruby/classes/string/split) 

# environment 

- ruby 2.3.0 


# Original by
[Ruby | split の引数を省略する](https://qiita.com/Yinaura/items/58176b32d7ed021be441)

# About

[About this translattion](https://qiita.com/YumaInaura/items/7f6fd1e9310a6816469a)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Rails | Convert all hash keys to symbols (symbolized_keys / deep_symbolize_keys)

As the title.

     { 'a' => 1, 'b' => 2, 'c' => 3 }.symbolize_keys # => {:a=>1, :b=>2, :c=>3} 

# When the hierarchy of hash is deep 

`deep_symbolize_keys` it is `deep_symbolize_keys` , it will change to all symbols regardless of the hierarchy. (Rails 4)

     { 'a' => 1, 'b' => 2, 'c' => { 'd' => 3 } }.deep_symbolize_keys # => {:a=>1, :b=>2, :c=>{:d=>3}} 

## Great _symbolize_ deep _symbolize_ keys 

`deep_symbolize_keys` , for example, even if there is an array in the middle, it does not matter.

     {'a' => 1, 'b' => 2, 'c' => [{'d' => [ { 'e' => 3 }] } ] }.deep_symbolize_keys # => {:a=>1, :b=>2, :c=>[{:d=>[{:e=>3}]}]} 

# Supplement 

- There is also a destructive method. ( `symbolize_keys` / `deep_symbolize_keys!` ) 
- I posted it because I didn't hit it with "Rails / All / Symbols". 

# environment 

- Rails 4.2.6 


# Original by
[Rails | ハッシュのキーを全てシンボルに変える ( symbolized_keys / deep_symbolize_keys  )](https://qiita.com/Yinaura/items/04b97914f598a63184ad)

# About

[About this translattion](https://qiita.com/YumaInaura/items/7f6fd1e9310a6816469a)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Ruby | Find keys common to multiple hashes

`keys` and `&` .

## Example 1 

Next, if both has `b:` and `c:` keys.

     { a: nil, b: nil, c: nil }.keys & { b: nil, c: nil, d: nil }.keys # => [:b, :c] 

## Example 2 

It can also be used for three or more hashes.

Next, if every hash has a key of `c:` .

     { a: nil, b: nil, c: nil }.keys & { b: nil, c: nil, d: nil }.keys & { c: nil, d: nil, e: nil}.keys # => [:c] 

# environment 

- ruby 2.3.0 


# Original by
[Ruby | 複数のハッシュに共通するキーを調べる](https://qiita.com/Yinaura/items/b1ebb00186b04c147a2c)

# About

[About this translattion](https://qiita.com/YumaInaura/items/7f6fd1e9310a6816469a)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
If you write numbers in SQL | ORDER BY ...

Sorting is performed in the "x-th column".

# Example 

When sorting in the first column.

     mysql> SELECT * FROM examples ORDER BY 1 ASC; +------+-------+ | id | name | +------+-------+ | 1 | Carol | | 2 | Bob | | 3 | Alice | 

When sorting in the second column.

     mysql> SELECT * FROM examples ORDER BY 2 ASC; +------+-------+ | id | name | +------+-------+ | 3 | Alice | | 2 | Bob | | 1 | Carol | +------+-------+ 

# environment 

     Your MySQL connection id is 8 Server version: 5.7.12 Homebrew 



# Original by
[SQL | ORDER BY に数字を書くと...](https://qiita.com/Yinaura/items/0734a56de93df5995918)

# About

[About this translattion](https://qiita.com/YumaInaura/items/7f6fd1e9310a6816469a)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
わざわざ学ばなくてもいいプログラミング言語一位Elm

[2019年にわざわざ学ばなくてもいいプログラミング言語](https://japan.zdnet.com/article/35135732/)という記事で堂々一位にElmがランクインしました！名誉ですね！

記事の大事な部分を引用すると、

> 同社のランキングは、コミュニティのエンゲージ、成長、雇用市場の3つの側面から決定したスコアに基づく（編集部注：Codementorは発表について、3つの側面に基づく評価をしたものであり、「名前の挙がった言語の有用性を過小評価したり、その価値を疑問視したりするものではない」と説明している）。

それでは、有用性や価値の部分について、わざわざ学ぶ必要があるか無いかを検証してみましょう！

# 障害に強いプロダクトを作れる

Elmは「静的型付関数型言語」という40年以上の歴史を持つ研究成果を活用しています。その結果、

- **実用上ランタイムエラーが出ない**(nullやundefinedが存在しない)
- **とてもわかりやすい親切なエラーメッセージ**がでる
- コードの規模が大きくなっても**全体の設計が崩れることがない**

という利点を得られます。
何だ大したことないですね! これらの利点は**一切の設定もせず**に、**何のライブラリも入れること無く** 自然に得られるのです！ 

Elmのコードは副作用がなく(副作用を起こすことはできます)バグを起こすことがないので、**1ファイル2000行を目指すことを推奨されたり**。仮に**20ファイルある状態でコードを変更したとしても、脳死でコンパイルエラーを治すだけでリファクタリングが完了する**と言う難しいことを考えなくて良いという[カルチャーショック](https://guide.elm-lang.jp/webapps/structure.html)が存在します！

実際にElmのコンパイラの制約でバグを数え切れないぐらい防ぎ、
1ファイル1000行突破するのはコンビニに行くのと同じ感覚になりました。

うん！学ぶ必要なさそう！

# いろんな初学者に対しての敷居が低い

Elmの文法はとても少なく、[この１ページ](https://elm-lang.org/docs/syntax)にすべてが集約されています。[公式のガイド](https://guide.elm-lang.jp/)も日本語コミュニティの方々によって日本語訳されていています。Elmは情報量が少ないと言われていますが、**そもそも覚えることが少ない**のです。(もちろん実用的なノウハウはもっと増えてくると嬉しいですね！)

公式ガイドはとても短いですが、質が高く・**方向性がユニーク**です。

> あらゆる言語で使える法則やパターンを重視すること

> Elm に対して様子見の立場である方も、Elm をちょっと試してみて実際に何かプロジェクトで使ってみると JavaScript や React のコードがいままでよりもうまく書けるようになっているはずです。 Elm で得られた知見はいろんなところで簡単に役立てることができます。」

とElmを使わなかったときにも知識が役立つことと明記されている点です。あとは先程も書きましたが、[エラーがお母さん並に親切](https://qiita.com/ababup1192/items/8dae437da47f25811658)で初学者が挫折する方が難しかったりします。日本語の書籍「[基礎からわかる Elm](https://www.amazon.co.jp/dp/4863542224)」は公式ガイドで足らない部分の補完をしていて、とーーーーっても丁寧にマニアックな情報なんかも書いていて買わない理由はないぐらいのクオリティになっています。

Elmをオンラインで簡単に試せる[Ellie](https://ellie-app.com/new)というサービスもあります。自由にパッケージを入れれて便利です。

日本の情報だと、Twitterに「Elm」というキーワードを入れて疑問をつぶやくと、すぐさま疑問に答えてくれるようです。

うん！学ぶ必要はなさそう！

# プロジェクト管理が楽

ElmはThe Elm Architectureというフレームワークを一択にしている言語です。また、テストフレームワークも実質一択なのでバージョンアップなどが非常に楽です。さっさと実運用レベルの環境が欲しい方のオススメのボイラプレートが[こちら](https://github.com/simonh1000/elm-webpack-starter/blob/master/package.json#L21)になりますが、ガチガチに整えたとしてもこれほどしか依存がありません。

Elmのパッケージはpackage.jsonとは別に[elm.json](https://github.com/simonh1000/elm-webpack-starter/blob/master/elm.json)管理下に置かれます。ここで管理されるサードパーティ含む全てのライブラリは、**[セマンティックバージョニング](https://semver.org/lang/ja/)が強制されています**。(ライブラリ作者はバージョンを手打ちすることはなく、利用者は基本ライブラリバージョンを指定する必要がありません)。さらにバージョンアップ時にどんな変更差分があったかコマンド一発で見ることができ、非常に楽です！

<img width="860" alt="スクリーンショット 2019-04-19 6.56.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/48687/3f07d1fb-55be-8077-dcb0-8bad2ac03bf9.png">


うん！学ぶ必要はなさそう！


# 学んだ人がみんな笑顔になる

僕はオンラインでもオフラインでもElmをフロント・プログラミング初心者の方に教える機会が多いのですが、大体魔法を見ているような感覚と、あれ？**簡単過ぎてじぶん続けれそう!**という感想を抱いて**笑顔になってくれます**。リピーターも非常に多く、次も教わりたい！と言われるケースが多いです。**オンラインでも楽しい楽しいという声がとても多く見受けられます**。

プログラミングは苦しんでやるものですね！　

うん！学ぶ必要なさそう！
Makefileメモ

# `@`の意味
 "@" はコマンド行をエコーしない
http://quwahara.hatenablog.com/entry/2012/02/13/201713


e.g.


``` makefile
.PHONY: common-style
common-style:
	@echo ">> checking code style"
	@fmtRes=$$($(GOFMT) -d $$(find . -path ./vendor -prune -o -name '*.go' -print)); \
	if [ -n "$${fmtRes}" ]; then \
		echo "gofmt checking failed!"; echo "$${fmtRes}"; echo; \
		echo "Please ensure you are using $$($(GO) version) for formatting code."; \
		exit 1; \
	fi
```
https://github.com/prometheus/prometheus/blob/master/Makefile.common

# `-`の意味
"-" はその行のコマンドが失敗しても次の行に実行が移る
http://quwahara.hatenablog.com/entry/2012/02/13/201713
gsutil | create a new bucket

Like this.

`gsutil mb gs://bucket_name`

 

By the way, mb stands for Make Buckets.

# environment 

- gsutil version: 4.19 
# Original by
[gsutil | 新しいバケットを作る](https://qiita.com/Yinaura/items/4ce0a8a898f95979b122)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
gsutil | upload / download files

Both are done with the cp command.

## When uploading 

Write in the order of "local path" → "gcs path".

`gsutil cp example.log gs://example_bucket/`

 
## When downloading 

Write in the order "path of gcs" → "local path".

`gsutil cp example.log ./`

 
# environment 

- gsutil version: 4.19 
# Original by
[gsutil | ファイルをアップロード / ダウンロードする](https://qiita.com/Yinaura/items/faa1b6964fb8503f0a50)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Slack | Remind any comment for yourself

# operation 

Comment next to the button (This → ![image](https://qiita-image-store.s3.amazonaws.com/0/90607/b0797ff2-dd09-93e9-c46b-25236db94776.png) You can easily remind you from). Just press "Remined me about this" and then just select the time.

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/62eb8b56-628b-6a1b-cf7f-f70437c77f3c.png)

# result 

When it's time, slackbot will tell you in a DM for you. (Not notice to the original channel)

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/27588dbf-a548-1906-ac54-3a98acf9ad9b.png)

# environment 

- Slack 1.1.2 (Mac App) 
# Original by
[Slack | 任意のコメントを自分向けにリマインド設定する](https://qiita.com/Yinaura/items/33dc2c4ef2388706fa52)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Publish Git | .gitconfig to your Github repository! (use the .gitconfig include)

Configuration files tend to be "secrets of secrets", but how about publishing more and more!

However, I think there are also personal names, project-specific parts, and things that you do not want to disclose. So we use the .gitconfig include feature.

# Public file 

Apart from .gitconfig, create an include file in a directory of your choice and manage git. The file name may be anything.

For example, if you publish only the alias settings, it looks like this:

     [alias] ck = checkout st = status -s 

# include 

Include the above file from the .gitconfig body.

     + [include] + path = ~/my_configs/.gitconfig_for_include - [alias] - ck = checkout - st = status -s [user] name = yinaura email = example@email.com 

# result 

By doing this, you can manage the repository by making only "the part you want to publish" independent. You don't have to copy and paste public .gitconfig.

All you have to do is push to Github!

# reference 

- [gitconfig include is convenient](http://qiita.com/knt45/items/51b8a8645f36fb0a6d01) 
- https://github.com/Yinaura/private _configs / blob / master / .gitconfig_ for\_include 
# Original by
[Git | .gitconfig を Github レポジトリで公開しよう！ ( .gitconfig の include を使う )](https://qiita.com/Yinaura/items/b2c0dfa69e8325495d95)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
BigQuery | Easily check column types in the current screen

In any screen, when you mouse over a column, it pops up. (did not notice)

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/968040ce-c13c-0468-6d29-01c4c1c3307f.png)

# Original by
[BigQuery | 今の画面で簡単にカラム型を確認する](https://qiita.com/Yinaura/items/1d5197a8ff11548d08e4)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Git | fixup / squash in reverse order with $ git rebase --interactive

# problem 

A story about rebasing in interactive mode.

For example, if you have a commit like this:

     pick 77335c9 Commit A pick d850545 Commit B 

I don't want to dissolve B in A.

     Commit A ⇡ Commit B 

I want to dissolve A into B.

     Commit A ↓ Commit B 

# Solution 

At that time, first replace the text up and down.

     pick d850545 Commit B pick 77335c9 Commit A 

Next, specify fixup (or squash).

     pick 77335c9 Commit A f d850545 Commit B 

# environment 

- git version 2.7.4 (Apple Git-66) 
# Original by
[Git | $ git rebase --interactive で 逆順に fixup / squash する](https://qiita.com/Yinaura/items/9aadcec4f2eebf2407a8)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Github | Set up 2-step verification for your account!

Security important.

# Settings\> Security 

Access https://github.com/settings/security. Select [Set up two-factor authentication].

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/264b3ebb-f7fb-bba2-fd00-e4db1a38ac48.png)

# Choose how to receive the code 

There is a phone call and an SMS. Here we choose the right SMS.

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/2457d30b-eb36-06a6-5a5e-2f2661c6838c.png)

# Send authentication code to mobile 

Select Japan and enter your phone number.

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/e4ee3c90-1f28-870a-155c-825f4b44fe92.png)

# Check SMS on mobile 

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/74bb0297-4cb0-458e-ec5f-97729bc14718.png)

# Enter the received authorization code on GitHub 

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/97859336-12c2-a90d-4dce-6ba5cb9c168a.png)

# Authentication success 

Print out the recovery code if necessary.

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/70872bd4-fd36-9739-f24e-c76cd392c1c8.png)

# Original by
[Github | アカウントに二段階認証を設定しよう！](https://qiita.com/Yinaura/items/5926cbd6cf3a71e93cf5)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
BigQuery | bq load-nosync option makes --max_bad_records useless

It may be.

`--nosync` at the time of wearing, `bq load --max_bad_records=無限`

Treated like that, even if there is a discrepancy between the resource and the schema, the load itself succeeds implicitly. There is no error.

# environment 

- This is BigQuery CLI 2.0.24 








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Qiita | After changing the user name, I tried to get the same user name again

# Conclusion 

it can.

(As of June 2016)

# Verification 

### From the settings page, this. 

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/21ec42c0-ecaa-3f7b-7df0-57f709452e27.png)

### Here 

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/67ddc029-067e-e391-e70e-0d6b346495ca.png)

### The username has changed. 

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/296534d7-492e-3bee-2833-622f6fdcd6bc.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/6ace26e2-2b55-1b53-7f10-8471b34c52d5.png)

### The URL has also changed. 

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/b1169128-f646-9aa3-c3da-8960c18177cf.png)

### The original page became Not Found. 

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/69f7253b-c230-88c7-994d-c690d92b1aba.png)

### I will try to restore the username on the configuration page again. 

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/45cf3a4a-f1c4-199b-4bad-6b7d27d21389.png)

### I'm back. 

![image](https://qiita-image-store.s3.amazonaws.com/0/90607/bb873bb2-70cf-9c03-ab52-43d80a83e55c.png)









<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
PHPのInterfaceで__invokeを使うべきか？

PHPの`interface`を使う場合、`__invoke`メソッドを使うことができます。これを使うとメリット・デメリットは何だろう？と~~（どうでもよさそうな）~~ことを考えたので書いてみます。

例えば、

```php
interface DoItInterface {
    public function __invoke(): DoneInterface;
}
```

とします。このinterfaceを実装した`DoIt`クラスがあるとすると、こんな風に使えます。

```php
$do = new DoIt();
$done = $do();
```

ほんのちょっとコードが減ります。便利なような、そうでもないような…　メインのメソッドが一つしかない場合に、`__invoke`を使うのはメリットはあるのでしょう？

### TL;DR

いきなり結論を書くと、interfaceなどで`__invoke`は使わないほうがいい、と考えます。

## メリット

### メソッドの名前を考えなくていい

すでにinterface名で体を表しているのであれば、メソッド名を考えなくてすみます。これは大きい。

### callableとして使える

Closureなどと混ぜて使える。

## デメリット

### クラスのプロパティに使うと残念な感じになる

こういうコードになります。

```php
class DoAll {
    /**
     * @var DoItInterface
     */
    private $doIt;
    public function do() {
        // $this->doIt();        // <- そのまま呼べない！
        $this->doIt->__invoke(); // <- なんか格好悪い！！
    }
}
```

PHP7.2でも、まだ対応できてません。パーサー変えるとき、対応するという話を聞いた記憶がかすかにありますが、まだみたいです。結局`__invoke`を使うことになるなら、普通にメソッド名をつけたくなります。

### IDEで検索に引っかからない

IDEというか「PhpStorm 2019.1」での話ですが、`DoItInterface::__invoke`を「Find Usage」で検索した場合、検索対象になりませんでした。このコードです。

```php
$do(); // <- 検索で出てこない！
```

これはPHP自体の問題ではないですが、開発から見ると結構大きな問題と思います。リファクタリングするときに修正箇所を見落としたり、自動で修正できないことになります。

この一点だけですが、`__invoke`を使わないことにしました。

## メソッド名は？

では、メソッドの名前は何がいいのでしょう？

### interface名と似た名前を使う

例えば`SendMailInterface::send()`のように、インターフェース名と同じような名前を使うことです。インターフェースだけを見ると妙な感じがしますが、クラス名が正しくつけられていれば、問題ないはず… 例えば、`$notifyUser->send()`であれば違和感はないです。

### 英語でよくある言葉を使う

こういうメソッドでよく使われてる動詞を使います。

- `handle`
- `apply`
- `invoke`
- `execute`あるいは`exec`
- `do`

> PHPで「do」は見たことないかも…

> ともあれ、インターフェースに合わせて、うまく動詞を選ぶ必要はありそう。`Filter`なら`apply`とか。英語のセンスが必要ですね。
初学者のための「コンピュータの動作原理」RISC-V 編 Lesson 3

[RV32I インストラクション・セット](https://qiita.com/zacky1972/items/48bf61bfe3ef2b8ce557)を読みながら，次のコードを読みましょう。与えられたレジスタマップとメモリマップを使用してください。[手順についてはこちらを参照してください。](https://qiita.com/zacky1972/items/9cc5392d70d43503afb6#実施)

ただし，`slli rd,rs1,2` については，さしあたり，レジスタ`rs1`の値を4倍した値をレジスタ`rd`に書き込むものと思ってください。

さて，このコードは，何を計算しているのでしょうか？ 考察してみましょう。初期値を色々変えてみて，実行結果を分析してみると，きっと理解できますよ。

# コード

```
	.file	"sample.c"
	.option nopic
	.text
	.align	2
	.globl	calc
	.type	calc, @function
calc:
	li	a5,0
	li	a3,0
.L2:
	bge	a5,a1,.L4
	slli	a4,a5,2
	add	a4,a0,a4
	lw	a4,0(a4)
	add	a3,a3,a4
	addi	a5,a5,1
	j	.L2
.L4:
	mv	a0,a3
	ret
	.size	calc, .-calc
	.ident	"GCC: (GNU) 8.2.0"
```

# レジスタマップ

|レジスタ|初期値|
|:------|:-----|
|a0     |0x00001000|
|a1     |0x00000004|
|a3     |0x00000000|
|a4     |0x00000000|
|a5     |0x00000000|
|pc     |calcのアドレス|

# メモリマップ

|アドレス|データ初期値|
|:------|:-----|
|0x00001000|0x00000010|
|0x00001004|0x00000008|
|0x00001008|0x00000020|
|0x0000100c|0x00000004|
Vue.js on CDN

![image.png](https://qiita-image-store.s3.amazonaws.com/0/257568/af2074ac-ce08-fe41-2f0f-c484b19f8c75.png)
猫本読みつつ簡易作成

## DEMO
```html:index.html
<html>
  <head></head>
  <body>
    <div id="app">
      <p>{{msg}}</p>
      <button @click="sayHello">Hi!</button>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    <script type="text/javascript" src="index.js"></script>
  </body>
</html>
```

```js:index.js
new Vue({
  el: "#app",
  data: {
    msg: "Hello"
  },
  methods: {
    sayHello(){
      this.msg = "World!"
    }
  },
  mounted(){
    //表示後にやりたいことを書く
  }
})
```

## 基本構成
### el:
mountする要素

### data:
アプリケーションで使用するデータ

### methods: 
アプリケーションで使用するメソッド

### mounted:
ライフサイクルフック

## ライフサイクルフック
適切なタイミングでメソッドを呼び出すためにライフサイクルを把握する

|メソッド  |タイミング  |
|---|---|
|beforeCreate |インスタンスが作成され、リアクティブの初期化がされる前 |
|created  |インスタンスが作成され、リアクティブの初期化がされた後 |
|beforeMount |インスタンスがマウントされる前 |
|mounted |インスタンスがマウントされた後 |
|beforeUpdate |データが変更され、DOMに適用される前 |
|updated |データが変更され、DOMに適用された後 |
|beforeDestroy |Vueインスタンスが破棄される前 |
|destroyed |Vueインスタンスが破棄された後 |
|errorCaptured |任意の子孫コンポーネントからエラーが補足された時 |

## 書籍情報
mio, 基礎から学ぶ Vue.js 
https://amzn.to/2GuqPKh

## 雑感
そういえばネイティブアプリにもライフサイクルあった。
初学者のための「コンピュータの動作原理」RISC-V 編 Lesson 2

[RV32I インストラクション・セット](https://qiita.com/zacky1972/items/48bf61bfe3ef2b8ce557)を読みながら，次のコードを読みましょう。与えられたレジスタマップを使用してください。[手順についてはこちらを参照してください。](https://qiita.com/zacky1972/items/9cc5392d70d43503afb6#実施)

さて，このコードは，何を計算しているのでしょうか？ 考察してみましょう。初期値を色々変えてみて，実行結果を分析してみると，きっと理解できますよ。

# コード

```
	.file	"sample.c"
	.option nopic
	.text
	.align	2
	.globl	calc
	.type	calc, @function
calc:
	li	a5,1
	li	a4,0
.L2:
	bgt	a5,a1,.L4
	add	a4,a4,a0
	addi	a5,a5,1
	j	.L2
.L4:
	mv	a0,a4
	ret
	.size	calc, .-calc
	.ident	"GCC: (GNU) 8.2.0"
```

# レジスタマップ

|レジスタ|初期値|
|:------|:-----|
|a0     |0x00000003|
|a1     |0x00000004|
|a4     |0x00000000|
|a5     |0x00000000|
|pc     |calcのアドレス|
初学者のための「コンピュータの動作原理」RISC-V 編 Lesson 1

[RV32I インストラクション・セット](https://qiita.com/zacky1972/items/48bf61bfe3ef2b8ce557)を読みながら，次のコードを読みましょう。与えられたレジスタマップを使用してください。[手順についてはこちらを参照してください。](https://qiita.com/zacky1972/items/9cc5392d70d43503afb6#実施)

さて，このコードは，何を計算しているのでしょうか？ 考察してみましょう。初期値を色々変えてみて，実行結果を分析してみると，きっと理解できますよ。

# コード

```
	.file	"sample.c"
	.option nopic
	.text
	.align	2
	.globl	calc
	.type	calc, @function
calc:
	li	a5,1
	li	a4,0
.L2:
	bgt	a5,a0,.L4
	add	a4,a4,a5
	addi	a5,a5,1
	j	.L2
.L4:
	mv	a0,a4
	ret
	.size	calc, .-calc
	.ident	"GCC: (GNU) 8.2.0"
```

# レジスタマップ

|レジスタ|初期値|
|:------|:-----|
|a0     |0x00000003|
|a4     |0x00000000|
|a5     |0x00000000|
|pc     |calcのアドレス|
競技プログラミングテクニック（Python編）

都度更新していきます。

## 手法
* [尺取り法](https://www.kumilog.net/entry/two-pointers)
* [いもす法](https://imoz.jp/algorithms/imos_method.html)

## テクニック
* PythonでTLEしたとしてもPyPyではACになる可能性がある。
* 切り上げ ```-(-4 // 3)```
* 問題の手順を逆から考えてみる。
* 問題から漸化式を作成し再帰関数に置き換える。
dapps開発 サイトのまとめ

一ヶ月ちょっとブロックチェーンを勉強したのですが
全然進んでる気がしないので参考にしたサイトをまとめながら
何を学習してきたか振り返りたいと思います。

#ブログ系
ブロックチェーンを勉強する計画の参考程度に読みました。
本読んでプロトタイプ作るという流れです。

・[ブロックチェーンを知るところからdApps開発までの学び方｜田中 康平｜note](https://note.mu/kolife01/n/ned268e53256a)
・[これからEthereumでDApps開発する人にオススメサイト](https://qiita.com/yukatou/items/05652ba149266f81d4fe)
・[DApps開発学習開始して2ヶ月経過したのでやったことまとめ](https://matsushin11.com/dapps%E5%AD%A6%E7%BF%92%E9%96%8B%E5%A7%8B%E3%81%97%E3%81%A62%E3%83%B6%E6%9C%88%E7%B5%8C%E9%81%8E%E3%81%97%E3%81%9F%E3%81%AE%E3%81%A7%E3%82%84%E3%81%A3%E3%81%9F%E3%81%93%E3%81%A8%E3%81%BE%E3%81%A8/)

#サイト系

##コントラクトの勉強
・[クリプトゾンビ](https://share.cryptozombies.io/jp/lesson/6/share/The_Phantom_of_Web3?id=YXV0aDB8NWM4NzFhNDY4ODFmMDY3ZjI0NjQ4ZTg2)
スマートコントラクトを書くためのSolidityという言語をゲーム形式に学べます。
Progateのブロックチェーン版みたい感じでした


##簡単に作ってみる
コントラクトの作成の仕方がわかったら実際にそこコントラクトをフロントエンドと繋ぐ必要があります。
ここがかなり難しい部分だと思います。
「truffle tutorial」は、truffleのツール？みたいなのを使えるのでチュートリアル通りにやれば動くものは作れます。
実際に動いた時は純粋に嬉しかったです。

・[DApps開発ギルドでデプロイしたアプリを1から作ってみる](http://i-yusuke.com/entry/dapps-dev-guild-tutorial/)
・[truffle tutorial](https://truffleframework.com/tutorials/pet-shop)

##Reactを使ったフロント
上記二つはHTMLとJSでフロントエンドを作っていたのですが
Reactを使ってやりたいのでReactで作っているものを探してみました。
・[Build React Blockchain App - Ethereum/React Todo List](https://www.youtube.com/results?search_query=Build+React+Blockchain+App+-+Ethereum%2FReact+Todo+List)
・[Build A Simple And Unstoppable Decentralized Web Application (DAPP)](https://medium.com/coinmonks/build-a-simple-and-unstoppable-decentralized-web-application-dapp-aa8d08e35f9c)
・[Step by Step Approach to create DAPP—using Ethereum, ReactJS & IPFS — Part 1](https://medium.com/coinmonks/step-by-step-approach-to-create-dapp-using-ethereum-reactjs-ipfs-part-1-42ea4cf69488)

dapp UniversityはGregoryさんという方がdappsの基礎から開発までかなり詳しく説明してくださているます。
これに紹介されているReactのアプリをこれから参考にして勉強いていきたいと思います。


#一ヶ月を終えて
###バージョン管理が大事
Ethereumを利用したdapps開発では簡単なアプリケーションでもtruffle, solidity, web3.js, Reactなどといった様々な言語を必要とします。また、solidityやweb3.jsは頻繁にアップデートが行われ、それによる仕様の変更もかなり大きいです。
昨日まで動かせていたのに、今日は動かないみたいなことはよく起こりました、、
それぞれの言語のバージョンはpackage.jsonなどでしっかり管理することが必要と感じました。

###フロントエンドとブロックチェーン上のコントラクトとの関連が難しい
Railsを少しかじった私にとっては難しい部分がありました。
Railsはノリでいけていて、コントラクトがどういう設計になっていて、フロントとどう繋げるかといった、一巻の流れで考えることはなかったので、、

###今後
dappsのプロトタイプをいくつか作っていこうと思います


##おまけ：Vueを使ったフロント
・[Dappsをフロントエンドまで作ろう！【Truffle】【Infura】【Metamask】【Vue.js】【npm】](https://www.katonobo.com/entry/how-to-truffle-frontend)
・[VueとReactの違い：I created the exact same app in React and Vue. Here are the differences.](https://medium.com/javascript-in-plain-english/i-created-the-exact-same-app-in-react-and-vue-here-are-the-differences-e9a1ae8077fd)
Vueでの開発もありました。
コントラクトの表示、メタマスクのアドレスの表示、コントラクトの値の更新を行なっています。
共通鍵暗号方式と公開鍵暗号方式の違い

参考サイト:
https://www.fe-siken.com/kakomon/29_aki/pm01.html

下表は公開鍵暗号方式と共通鍵暗号方式の違いをまとめたものです。
![publicprivate.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368574/071c8c68-f93f-b663-f412-b5864de01925.png)

#確認問題
SSHによる通信に関する次の記述を読んで，設問に答えよ。

　SSHは遠隔ログインのための通信プロトコル及びソフトウェアであり，通信データの盗聴対策や，通信相手のなりすましを防ぐ仕組みを備えている。SSHでは，サーバにログインしてデータをやり取りする通信(以下，ログインセッションという)に先立って，安全な通信経路の確立と利用者認証を行う必要がある。安全な通信経路の確立，利用者認証及びログインセッションを合わせてSSHセッションと呼ぶ。その流れを，図1に示す。
![mondai.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368574/de7dd488-a56f-1413-f543-690a2d141861.png)

〔安全な通信経路の確立の概要〕
　安全な通信経路の確立は，次のようにして行う。

(1)クライアントがサーバにアクセスする。

(2)サーバとクライアントが，SSHセッションで使用する暗号アルゴリズムについて合意する。

(3)サーバとクライアントが，通信データの暗号化に使用するセッション鍵と，他のSSHセッションと区別するためのセッション識別子について合意する。

(4)クライアントがサーバ認証を行う。サーバ認証では，クライアントがあらかじめ入手して正当性を確認しておいたaを用い，サーバによるセッション識別子へのディジタル署名が正しいかどうかを検証する。

(5)合意した暗号アルゴリズムとセッション鍵を用いて，<font color="blue">②共通鍵暗号方式</font>による通信データの暗号化を開始する。これ以降の通信は，全て暗号化される。

##設問
本文中の<font color="blue">②</font>について，通信データの暗号化に公開鍵暗号方式ではなく共通鍵暗号方式を用いる理由として適切な答えを解答群の中から選べ。

ア：共通鍵暗号方式は，公開鍵暗号方式よりも暗号処理が高速である。

イ：共通鍵暗号方式は，公開鍵暗号方式よりも解読に時間が掛かる。

ウ：共通鍵暗号方式は，公開鍵暗号方式よりも鍵の再利用が容易である。

エ：共通鍵暗号方式は，公開鍵暗号方式よりも鍵の配布が容易である。

#解答
下記サイトの設問3をご参照ください。
https://www.fe-siken.com/kakomon/29_aki/pm01.html
Heroku をAPI から操作して、worker の起動・停止を行う

PlatformAPI を使うと、Rails から Heroku をAPIで制御できる。

簡単なことだが、platform-api の dyno と formation で混乱したのでメモ。

```
heroku = PlatformAPI.connect_oauth(ENV['HEROKU_OAUTH_TOKEN'])
heroku.formation.update('my-app', 'worker', {quantity:   num}) 
```

## Dyno ではない
heroku の dyno を操作するのかと思って、エラーに対して auth を調べていたが、関係なかった。

```
heroku.dyno.stop('my-app', dyno_id) 
```

## 起動数を設定
```
{quantity:   num}
```
の num には、起動数をいれる。

１つで起動する場合は

```
heroku.formation.update('my-app', 'worker', {quantity:   1}) 
```

停止の場合は

```
heroku.formation.update('my-app', 'worker', {quantity:   0}) 
```

# PlatformAPI

Heroku Dev Center 
https://devcenter.heroku.com/articles/platform-api-quickstart

Ruby HTTP client for the Heroku API
https://github.com/heroku/platform-api
CSSの単位

## px
pxとはピクセル(pixel)の略です。
(ピクセルがわからない人は「ピクセルは画素とも呼ばれ画素数等でも知られるように画面上に存在する細かいドットのことなんだな」くらいの漠然とした認識で大丈夫です。)
pxで記述した場合、ディスプレイの解像度によって同じ大きさのディスプレイであっても文字のサイズは当然変わってしまいます。

## %
%とはfont-sizeプロパティの値に対する相対的な値。
font-sizeが16pxだとすると、100%=16px、50%=8pxとなる。

## em
emとはfont-sizeプロパティの値に対する相対的な値。
font-sizeが16pxだとすると、1em=16px、0.5em=8pxとなる。

## rem
rem(root em)はルート要素(<html>)を基準としたemです。
仮にpタグの中にstrongタグがある場合emでは、親タグの影響を受けてしまいますが、remならルート要素を参考にするので影響を避けることが出来ます。

```css
/* emによるよろしくない書き方 */
p {
  font-size: 0.7em;
}

strong {
  font-size: 0.5em;
```

## ex
「x」の大きさを基準とした単位。
日本では殆ど使い途は無いでしょう。


他にも単位はありますが、あまり使い途が無いと思うので書きません。
viewport単位については複雑になるので別記します。
デジタル署名

参考サイト:
https://www.fe-siken.com/kakomon/29_aki/pm01.html

#デジタル署名とは
データの受信者側で送信元確認と改竄検知を行う仕組み。

#具体的には
以下の流れで、データ送信者の照合を行います。
>
[送信者]
メッセージダイジェスト(本文のハッシュ値)を「<font color="red">自身(送信者)の秘密鍵</font>」で暗号化したものを本文に付けて送信

>
[受信者]
デジタル署名を「<font color="red">送信者の公開鍵</font>」で複合

この一連の流れを図に表したのが、下になります。
![degitalsyomei.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368574/2bc8cdd8-f084-8d67-6a32-0c3d11be2b52.png)
renovateを週1で実行する

renovateの設定分かりづらいが基本的には、extendsで設定できるようになっている。

https://renovatebot.com/docs/presets-schedule/

週1回実行したい場合は、以下のように`schedule:weekly`を設定してやればいい。

```
{
  "extends": ["config:base", "schedule:weekly"]
}
```

OSSなんかだとデフォルトの設定だとPRが来すぎてうるさいので、`schedule:weekly`か`schedule:monthly`あたりが妥当だと思う。
カラムデータを並び替える

今回は、テーブルクエリのカラムデータを並び替える機能を実装します。

例えば、すでにTextsテーブルにカラムデータがいくつか入っているとします。


#idの昇順、降順で並び替える
```Ruby:texts_controller.rb
class TextsController < ApplicationController
 
    def index
        @texts = Text.all.order(id: :desc)
    end

end
```

以上のようにコントローラに記述することで、クエリデータをidをkeyにして、降順にできます。
降順を表すのは"desc"です。
ちなみに昇順は"asc"です。
"desc""asc"も文字列ですから":"をつけ忘れないようにしましょう。


#scopeを使う
上記のようにコントローラにwhereやorderを記述するとDRYな実装にならないので、モデルにscopeを設置します。

scopeはヘルパーメソッドのようにデフォルトで使えます。

```php:text.rb
class Text < ApplicationRecord
    scope :asc_sort, ->{ order(id: :asc)}
    scope :desc_sort, ->{ order(id: :desc)}
end
```

```Ruby:texts_controller.rb
class TextsController < ApplicationController
 
    def index
        @texts = Text.all.desc_sort
    end

end
```

このようにすると、コントローラのどの部分でも使い回しができて良いですね！
OpenVINOを使ってCPU内蔵GPUの速さを確認する

#目的
OpenVINOを使ってCPU内蔵GPUの速さを確認する
#検証環境
CPU: Intel Core i3-7100U CPU @ 2.40GHz
GPU: Intel HD Graphics 620

OS: Microsoft Windows 10 Home

利用したソフト:openvino_2019.1.087
 デモソフト名：demo_security_barrier_camera,demo_squeezenet_download_convert_run


※OpenVINOを使う理由は、Intelの内蔵GPUの性能がある程度引き出せるのではないかと考えたため。

#検証結果
inference(推論）の部分のみ。2回実行し、各々のfpsを示している。

--demo_security_barrier_camera
CPU FP32   　　22.6, 　17.3fps
GPU FP16   　　16.2, 　13.9fps
GPU FP32   　　11.5, 　14.1fps

--demo_squeezenet_download_convert_run
CPU FP32   　　34.6, 　62.0fps
GPU FP16   　　75.4, 　83.7fps
GPU FP32   　　65.5, 　59.2fps

#参考情報
デモプログラムのREADME抜粋

---
Classification Demo Using SqueezeNet

The demo illustrates the general workflow of using the Intel(R) Deep Learning Deployment Toolkit and performs the following:

  - Downloads a public SqueezeNet model using the model_downloader\downloader.py script

・・

Security Barrier Camera Demo

The demo illustrates using the Inference Engine with pre-trained models to perform vehicle detection, vehicle attributes and license-plate recognition tasks. 
As the sample produces visual output, it should be run in GUI mode. 
・・

実行時出力抜粋

---



    [ INFO ] Loading plugin CPU

        API version ............ 1.6
        Build .................. 22443
        Description ....... MKLDNNPlugin

    [ INFO ] Loading plugin GPU

        API version ............ 1.6
        Build .................. 22443
        Description ....... clDNNPlugin

#まとめ
GPU(Intel HD Graphics 620)は、CPUとの比較で、それなりに速いと思える。
10倍とか速い数字が出るとわかりやすいのであるが、それほどの値にはならなかった。
CPUが速い場合もあった。（MKLDNNPluginが速いためのような気もする。）
また、
GPUのFP32とFP16では、FP16のほうが速いという結果であるが、大きい差ではなかった。

#今後
また、何か関連する検討ができれば。
記載が、デモプログラムの名称を示しているだけなので、これでは条件がよくわからないあたりも、改善できれば。


#関連
[OpenVINOを使ってNeural Compute Stick 2(NCS2)の速さを確認する](https://qiita.com/enoughspacefor/items/5f9e85d744283d6dd0a8)
[Chatwork版]GASでGoogleフォームの結果を通知したい！-2019年版

前回はGoogleフォームの結果をSlackに通知する方法でしたが、Chatwork版もみたいの事で新しくコードを追加しました。
ただお馴染みですが、4流以下のスキルですから大したコードをかけてないのが正直なところです。笑
なので紹介しているのはこれからGASを覚えようとか、覚えたてです！とか、GASってなーに？って人向けの記事ばかりです！

##サイト紹介
以下様々なGASやその他記事を紹介してます！
https://bzbot.work/

紹介記事
今回紹介している記事は以下です！
https://bzbot.work/2019/04/16/googleform-chatwork/


##送信結果
まず、GoogleFormが送信された時に、以下通知がChatworkに届くように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363116/f425e88b-292b-a434-ef07-34bdba294fd7.png)

##ルームIDを取得
Chatworkでグループチャットを開いた時に表示されるURLの数字部分がルームIDです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363116/136a229d-fdf3-89ba-ae36-01c14d109a1d.png)

すべてのチャットの横に表示されている『グループチャットを新規作成』をクリックするとグループチャットが作成できて通知先として利用することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363116/a8214338-f4da-d615-c40a-c6b2232ba18b.png)

以下APIトークンを発行、表示する場合は、Chatworkのパスワードを入力してくださいと記載されているので、その通り入力すればAPIトークンが生成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363116/a25a458b-f040-dce5-80d6-6dd15df422a3.png)
以下Chatworkに送信する一部コードです。

```JavaScript:GAS
function sendToChatwork(body) {
  Logger.log('chatwork' + body);
  var msg = '[info][title]GoogleFormからの通知です' + '[/title]' + body + '[/info]';
  var roomId = '**********'//ルームIDを入力
  var client = ChatWorkClient.factory({token: '***********************'});//チャットワークのアクセストークンを入力
  client.sendMessage({room_id: roomId, body: msg});
}
```


こんな感じ。
色々呼び出している関数は他の処理でも応用して使えるので覚えておくと便利です！
pyhtonとDjangoでweb開発を学びはじめた

#はじめに
今回は、Djangoを勉強する上でわかりやすい参考書があったのでその紹介と軽く忘備録として内容をまとめたいと思います。
現在、[コチラ](https://www.miraidenshi-tech.jp/)のインターンでプログラミングやウェブ開発を学習しています。
丁度二か月くらいです。
初学者のため、間違いや修正があったらご指摘お願いいたします。

#使用教材
色々なサイトを参考にDjangoを学習しましたが、ふわっとしか理解できていませんでした。
正直、手順外の部分やエラーがでたらお手上げでした。
たまたま、Amazonでショッピングをしている際に[コチラ](https://www.amazon.co.jp/Python3-Django2-0%E5%85%A5%E9%96%80-Python%E3%81%A7%E4%BD%9C%E3%82%8BWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA%E5%85%A5%E9%96%80-%E3%83%8A%E3%82%AB%E3%83%8E-%E3%83%92%E3%83%88%E3%82%B7-ebook/dp/B07GNJW2QN)の教材を見つけました。
1～3巻で構成されており、Djangoの初歩的な使用の仕方からデータベースとの連携、デプロイまで学ぶことができます。
初心者にもわかりやすい説明で、スルッと頭に入ってきます。
しかも、kindleUnlimitedだと無料で使用できます！

#備忘録
軽く学んだことをアウトプットしておきます。
テキストが無料なので、詳しい内容はダウンロードしてみてください。

##Djangoとは？
Djangoとは、pythonでウェブ開発をする際に使用できるフレームワークです。
MTV構造を使用しています。
MTVは、モデル、テンプレート、ビューの頭文字をとったものです。
それぞれのイメージはこんな感じ（手書きですいません）
![IMG_0442.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352389/c4b3eb8c-aa1a-3d6d-ce86-fb7d56fb2558.png)

MTV構造の詳しい説明は、参考書を確認してみてください（笑）

##Djangoを導入
１．仮想環境を作るためのディレクトリを作成

```
$mkdir　ディレクトリ名
```
２．仮想環境を作成

```
$python3 -m venv ディレクトリ名
```
３．そのファイルの中で実行

```
$cd 名
$source bin/activate
```
４．Djangoの導入

```
$pip install django
```

##Djangoがダウンロードできたら・・・
ファイルを一式準備します。

```
$django-admin startproject ディレクトリ名
```
これで、「manage.py」と「ディレクトリ名」の二つができています。
そして、自分で決めた「ディレクトリ名」の中には、「＿init＿.py」「settings.py」「urls.py」「wsgi.py」の四つが入っています。
これらを編集して、ウェブ開発を行います。

##その後
一巻では上記のような初期設定から始まり、
・ローカルサーバの起動方法
・ルーティングの作成
・静的ファイルの配信
・HTMLファイルの取り扱い
・テンプレートの配置
等が学べます。

#まとめ
最初はよくわからなかったDjangoも徐々に理解が深まってきました。
もっと深い内容の記事が書けるように勉強したいと思います。
再度になりますが、初学者のためミスや修正がございましたらご指摘いただけると幸いです。
備忘録：固定ヘッダー有りの時のアンカーリンク

今日（2019/04/15）の気になったこと
備忘録として。
###作業時の状況
- あらかじめ用意されたコンポーネントを組み合わせてページを作成する業務
- aタグに#が指定されているものをスクロールさせるjsが組み込み済み
- アンカーリンクのtarget用のクラス*が用意されている

アンカーリンク用のクラスが用意されていたのに気付かずhtmlをくんでいて、アンカーリンクの位置がヘッダー分ずれていることに気づいた。
*クラスを付与すると、ネガティブマージンとそれと同じpaddingが付与される仕組み。
```margin-top:-120px;
padding-top:120px;
```
もともとのスタイルが崩れてしまうため、空div（もしくはsection,articleなど）を追加する必要がある。
htmlの構造としてよくないのではと思ったが、jsで高さ分移動位置をずらすのは面倒なのだろうか。。
個人的にネガティブマージンは好きじゃないから、私としてはjsの方がいいと思うけどな。
明日コンポーネント作成者に理由を聞いてみます。

####お知らせ
1. web情報発信収集等のtwitter始めました:point_right:[@YusaTech](https://twitter.com/YusaTech)
2. [Inside Frontend #3](https://inside-frontend.com/)参加します:fire:

#####今日の作業用BGM
ゆるふわギャング "Dippin' Shake"
https://youtu.be/bARY2QkVLv4
今更聴き始めたけどめちゃかっこいいし作業も捗る:notes:
SQLの備忘録メモ

間が空くと忘れてしまうのでメモ。
まだよくわかってない人のメモなので鵜呑みにしない。
https://sqlzoo.net/wiki/SQL_Tutorial/ja にひたすらチャレンジ。

# 用語
| name | price | num |
|:-:|:-:|:-:|
| apple  | 100  | 1  |
| lemon  | 200  | 2  |
| Peach  | 300  | 3  |

<dl>
  <dt>テーブル</dt>
  <dd>↑のテーブルのひとかたまり</dd>
  <dt>カラム</dt>
  <dd>列。name/price/name</dd>
  <dt>レコード</dt>
  <dd>行。apple/100/1 でワンセット</dd>
  <dt>フィールド</dt>
  <dd>エクセルで言う「セル」。apple/100/1/lemon…のそれぞれ1つずつ</dd>
</dl>

# 基本の書き方

```SQL
SELECT 出力データ FROM テーブル WHERE 条件
```

# 出力データの加工

## DISTINCT
重複なしでデータを出力する。

https://sqlzoo.net/wiki/Scottish_Parliament の2の問題、

```SQL
SELECT party.name, leader FROM msp 
RIGHT OUTER JOIN party ON msp.party = party.code
GROUP BY party.name, leader
```

でも、

```SQL
SELECT DISTINCT(party.name), leader FROM msp 
RIGHT OUTER JOIN party ON msp.party = party.code
```

でもいいみたい。
party.name, DISTINCT(leader)は答えが一意にならないので×。

## GROUP BY

WHEREの後。
指定カラム（複数可）のデータでまとめる。

# 複数テーブルの指定

基本の書き方。
JOINの部分は後述のJOINに差し替わる。
LEFT=table1、RIGHT=table2

```SQL
SELECT * FROM table1
JOIN table2 ON table1.id = table2.id
```


## INNER JOIN
table1にもtable2にもidが存在するテーブルが生成される。

## LEFT OUTER JOIN
table1にidが存在するテーブルが生成される。
table2にidが存在しないフィールドはNULLになる。

## RIGT OUTER JOIN
LEFTの逆。table2にidが存在するテーブルが生成される。
WEBから取得した文字列の文字化けに気づかずはまった

## ツールの仕様
VBAを使用してWEB画面から文字列を取得しEXCEL上に一覧化。
更に一覧化された文字列を使用し、別のWEB画面へインプットするツール。
## どうなったのか
画面で入力エラーが発生。

「－（マイナス）」の文字が、EXCEL上では表示されているが、ＷＥＢ画面へインプットした際にコード誤りがあり、WEBAPで読み取れていなかった。

また、入力エラーの内容がいまいちで、何が起きているのか分からなかったのと、EXCEL上では文字化けが発生していなかったので気づかずに嵌りました。

## どのような事象か
「－（マイナス）」は環境により、割当られているコードが異なります。

|文字列|IBM拡張文字|SJIS (Shift_JIS)|
|---|:---:|:---:|
|－（マイナス）|&H2212|&HFF0D|

WEBAPがIBM製品を使用しているからなのか、「－（マイナス）」がIBM拡張文字コードになっており、そのままでは、別のWEB画面へ入力できない状態になっていました。

分かってしまえば、ありがちで単純な話なのですが、
EXCEL上では普通に見えていたので、気づきませんでした。

##対応方法
vbaのソース上にIBM拡張の文字列を記載することができませんので、
ChrW関数を使用し、文字コードを指定して置換を行いました。

``` 
 対象文字列 = Replace(対象文字列, ChrW(&H2212), ChrW(&HFF0D))
```
|ChrW(&H2212)|IBM拡張文字－（マイナス）|
|---|:---:|:---:|
|ChrW(&HFF0D)|SJIS－（マイナス）|

対応はしたものの、理解できていないのが、
なぜ、WEBから取得した文字列がEXCEL上では表示されているのか？

IBM拡張文字のコードを利用してEXCEL上で表示しようとしても
「？」になってしまい表示することができません。

どなたか教えて頂けませんでしょうか。。。